sto cercando di dividere una stringa e metterlo in un vettorescissione una stringa ma mantenendo gettoni vuote C++
però, voglio anche mantenere un token vuoto quando ci sono delimitatore consecutive:
Ad esempio :
string mystring = "::aa;;bb;cc;;c"
Mi piacerebbe tokenize questa stringa su:; delimitatori ma tra delimitatori come :: e ;; Vorrei spingere nel mio vettore una stringa vuota;
so my desired output for this string is:
"" (empty)
aa
"" (empty)
bb
cc
"" (empty)
c
Anche il mio requisito non è quello di utilizzare la libreria boost.
se qualcuno mi prestasse un'idea.
grazie
codice che tokenize una stringa, ma non include i token vuote
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);
}
}
avete provato qualcosa? – Amit
Ho provato il codice sopra per tokenizzare la mia stringa e funziona ma esclude solo i token vuoti – XDProgrammer
Perché non aggiungi un 'tokens.push_back (" ");' subito dopo 'tokens.push_back (str.substr (lastPos, pos - lastPos)); '? – Bastien