ich eine Zeichenfolge zu spalten versuchen und es in einen Vektor setzenSplitting ein String aber halte leer Token C++
aber ich mag auch ein leeres Token halten, wenn es in Folge Trennzeichen:
Zum Beispiel :
string mystring = "::aa;;bb;cc;;c"
Ich möchte diese Zeichenfolge auf Tokenize:; Trennzeichen aber dazwischen Trennzeichen wie :: und ;; Ich möchte meinen Vektor eine leere Zeichenfolge einschieben;
so my desired output for this string is:
"" (empty)
aa
"" (empty)
bb
cc
"" (empty)
c
Auch meine Anforderung ist nicht die Boost-Bibliothek zu verwenden.
falls mir eine Idee geben könnte.
dank
Code, der eine Zeichenfolge tokenize aber die leeren Token nicht
void Tokenize(const string& str,vector<string>& tokens, const string& delim)
{
// Skip delimiters at beginning.
string::size_type lastPos = str.find_first_not_of(delimiters, 0);
// Find first "non-delimiter".
string::size_type pos = str.find_first_of(delimiters, lastPos);
while (string::npos != pos || string::npos != lastPos)
{
// Found a token, add it to the vector.
tokens.push_back(str.substr(lastPos, pos - lastPos));
// Skip delimiters. Note the "not_of"
lastPos = str.find_first_not_of(delimiters, pos);
// Find next "non-delimiter"
pos = str.find_first_of(delimiters, lastPos);
}
}
Haben Sie versucht, irgendetwas? – Amit
Ich habe versucht den Code oben, um meine Zeichenfolge zu symbolisieren, die funktioniert, aber nur sie ausschließen leere Token – XDProgrammer
Warum fügen Sie nicht ein 'token.push_back (" "); direkt nach' tokens.push_back (strstr (lastPos, pos - lastPos)); '? – Bastien