Come usare stringstream per separare le stringhe separate da virgole

Ho il seguente codice:

std::string str = "abc def,ghi"; std::stringstream ss(str); string token; while (ss >> token) { printf("%s\n", token.c_str()); } 

L’output è:

abc
Def, ghi

Quindi l’operatore stringstream::>> può separare stringhe per spazio ma non per virgola. Esiste comunque la possibilità di modificare il codice sopra in modo da poter ottenere il seguente risultato?

input : “abc, def, ghi”

uscita :
abc
DEF
ghi

 #include  #include  std::string input = "abc,def,ghi"; std::istringstream ss(input); std::string token; while(std::getline(ss, token, ',')) { std::cout << token << '\n'; } 

abc
DEF
ghi

 #include  #include  #include  using namespace std; int main() { std::string input = "abc,def, ghi"; std::istringstream ss(input); std::string token; size_t pos=-1; while(ss>>token) { while ((pos=token.rfind(',')) != std::string::npos) { token.erase(pos, 1); } std::cout << token << '\n'; } } 

Forse questo codice ti aiuterà:

 stringstream ss(str);//str can be any string int integer; char ch; while(ss >> a) { ss>>ch; //flush the ',' cout<< integer <