Como usar stringsstream para separar strings separadas por vírgula

Eu tenho o seguinte código:

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

A saída é:

abc
def, ghi

Portanto, o operador stringstream::>> pode separar strings por espaço, mas não por vírgula. Existe alguma maneira de modificar o código acima para que eu possa obter o seguinte resultado?

input : “abc, def, ghi”

saída :
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'; } } 

Talvez este código te ajude:

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