c++ - 如何使用stringstream分隔逗号分隔字符串

我有下面的代码:


std::string str ="abc def,ghi";
std::stringstream ss(str);

string token;

while (ss >> token)
{
 printf("%sn", token.c_str());
}

输出结果为:

abc
def,ghi

因此,stringstream::>>运算符可以按空格分隔字符串,而不能用逗号分隔,有没有办法修改代码以便得到以下结果?

输入:",def,ghi"

输出:
abc
def
ghi

时间:


std::string input ="abc,def,ghi";
std::istringstream ss(input);
std::string token;

while(std::getline(ss, token, ',')) {
 std::cout << token << 'n';
}

istream& getline (char* s, streamsize n, char delim );

就像这个:


char str[SIZE];
stringstream ss;
ss.getline(str, SIZE, ',');
string token(str);

如果认为在使用静态数组时会占用内存,可以使用动态分配代替:


char *str = new char[alloc_sz];
stringstream ss;
ss.getline(str, SIZE, ',');
string token(str);
// ...
// finally
delete [] str;

...