对字符串进行标记并在C++中包含分隔符

Jer*_*iah 20 c++ tokenize

我对以下内容进行了解释,但不确定如何在其中包含分隔符.

void Tokenize(const string str, vector<string>& tokens, const string& delimiters)
{

    int startpos = 0;
    int pos = str.find_first_of(delimiters, startpos);
    string strTemp;


    while (string::npos != pos || string::npos != startpos)
    {

        strTemp = str.substr(startpos, pos - startpos);
        tokens.push_back(strTemp.substr(0, strTemp.length()));

        startpos = str.find_first_not_of(delimiters, pos);
        pos = str.find_first_of(delimiters, startpos);

    }
}
Run Code Online (Sandbox Code Playgroud)

小智 17

C++工具包字符串库(StrTk)具有以下溶液:

std::string str = "abc,123 xyz";
std::vector<std::string> token_list;
strtk::split(";., ",
             str,
             strtk::range_to_type_back_inserter(token_list),
             strtk::include_delimiters);
Run Code Online (Sandbox Code Playgroud)

它应该导致token_list具有以下元素:

Token0 = "abc,"
Token1 = "123 "
Token2 = "xyz"

更多例子可以在这里找到