如何使用stringstream分隔逗号分隔的字符串

Mey*_*sam 118 c++ stringstream tokenize

我有以下代码:

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

string token;

while (ss >> token)
{
    printf("%s\n", token.c_str());
}
Run Code Online (Sandbox Code Playgroud)

输出是:

abc
def,ghi

因此,stringstream::>>运算符可以按空格分隔字符串,但不能用逗号分隔.反正有没有修改上面的代码,以便我可以得到以下结果?

输入:"abc,def,ghi"

输出:
abc
def
ghi

jro*_*rok 242

#include <iostream>
#include <sstream>

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

while(std::getline(ss, token, ',')) {
    std::cout << token << '\n';
}
Run Code Online (Sandbox Code Playgroud)

abc
def
ghi

  • @DmitryGusarov 这是一种习惯,也是一种很好的做法。在简短的示例中这并不重要,但“using namespace std;”在实际代码中很糟糕。更多信息[此处](/sf/ask/101690501/)。 (14认同)

Kis*_*ish 5

#include <iostream>
#include <string>
#include <sstream>
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';
    }
}
Run Code Online (Sandbox Code Playgroud)