web-dev-qa-db-ja.com

stringstreamを使用してコンマ区切りの文字列を分離する方法

私は次のコードを持っています:

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

string token;

while (ss >> token)
{
    printf("%s\n", token.c_str());
}

出力は次のとおりです。

abc
def、ghi

したがって、stringstream::>>演算子は、文字列をスペースで区切ることができますが、コンマで区切ることはできません。とにかく上記のコードを変更して、次の結果を得ることができますか?

入力: "abc、def、ghi"

出力
abc
def
ghi

110
Meysam
#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';
}

abc
def
ghi

228
jrok
#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';
    }
}
2
Kish