--- trunk/src/utils/StringTokenizer.cpp 2010/05/10 17:28:26 1442 +++ trunk/src/utils/StringTokenizer.cpp 2014/11/28 20:10:17 2045 @@ -35,8 +35,9 @@ * * [1] Meineke, et al., J. Comp. Chem. 26, 252-271 (2005). * [2] Fennell & Gezelter, J. Chem. Phys. 124, 234104 (2006). - * [3] Sun, Lin & Gezelter, J. Chem. Phys. 128, 24107 (2008). - * [4] Vardeman & Gezelter, in progress (2009). + * [3] Sun, Lin & Gezelter, J. Chem. Phys. 128, 234107 (2008). + * [4] Kuang & Gezelter, J. Chem. Phys. 133, 164101 (2010). + * [5] Vardeman, Stocker & Gezelter, J. Chem. Theory Comput. 7, 834 (2011). */ #include @@ -51,21 +52,21 @@ namespace OpenMD { : tokenString_(str), delim_(delim), returnTokens_(false), currentPos_(tokenString_.begin()), end_(tokenString_.end()){ - } + } StringTokenizer::StringTokenizer(std::string::const_iterator& first, std::string::const_iterator& last, const std::string & delim) : tokenString_(first, last) , delim_(delim), returnTokens_(false), currentPos_(tokenString_.begin()), end_(tokenString_.end()) { - } + } StringTokenizer::StringTokenizer(const std::string&str, const std::string&delim, bool returnTokens) : tokenString_(str), delim_(delim), returnTokens_(returnTokens), currentPos_(tokenString_.begin()), end_(tokenString_.end()) { - } + } bool StringTokenizer::isDelimiter(const char c) { return delim_.find(c) == std::string::npos ? false : true; @@ -113,7 +114,8 @@ namespace OpenMD { } else { std::string::const_iterator i = currentPos_; - //walk through the remaining string to check whether it contains non-delimeter or not + //walk through the remaining string to check whether it contains + //non-delimeter or not while(i != end_ && isDelimiter(*i)) { ++i; } @@ -205,13 +207,13 @@ namespace OpenMD { return result; } - std::vector StringTokenizer::getAllTokens() { + std::vector StringTokenizer::getAllTokens() { std::vector tokens; while (hasMoreTokens()) { - tokens.push_back(nextToken()); + tokens.push_back(nextToken()); } return tokens; - } + } void StringTokenizer::convertFortranNumber(std::string& fortranNumber) { std::string::iterator i; for(i = fortranNumber.begin(); i != fortranNumber.end(); ++i) { @@ -221,5 +223,20 @@ namespace OpenMD { } } + std::string StringTokenizer::getRemainingString() { + std::string result; + std::string::const_iterator tmpIter = currentPos_; + if(tmpIter != end_) { + std::insert_iterator insertIter(result, result.begin()); + + while (tmpIter != end_) { + *insertIter++ = *tmpIter++; + } + } + + return result; + } + + }//end namespace OpenMD