拆分逗号分隔的字符串

she*_*fer 1 c++ string vector

全新的 C++,我很难在字符串上拆分。我在堆栈溢出时看到了一些这样的例子,但是在 for 循环中循环时我无法让样本工作。

基本上我有一个看起来像的字符串数组。

    const string userData[] =
   {"A1,John,Smith,smithJ@mail.com,42",
   "B2,Jane,Doe,jd@gmailcom,121,2",
   "C3,Mickey,Mouse,mouseman@mail.com,20"
   };   
Run Code Online (Sandbox Code Playgroud)

以下是我自己最接近的解决方案

 string s;
 vector<istringstream> streamV;
 vector<string> stringV;
 for(const auto& str : userData)
 {
      istringstream nasa { str };
      getline(nasa, s, ',');
      stringV.push_back(s);

 }
 cout << stringV[0] << endl;
 cout << stringV[1] << endl;
Run Code Online (Sandbox Code Playgroud)

输出

A1
B1
Run Code Online (Sandbox Code Playgroud)

预期目标:我想将每个逗号分隔的值添加到向量中。然后,调用类构造函数对从字符串到整数的最后一个值进行一些内联​​类型转换。

Edit1 我理解我的问题类似于迭代字符串单词的最优雅的方法 主要区别在于提供的解决方案不适用于逗号分隔的列表,以及遍历数组/向量。

sec*_*pur 7

试试这个片段:

int main()
{
    vector<string> sentences =
    { "A1,John,Smith,smithJ@mail.com,42",
        "B2,Jane,Doe,jd@gmailcom,121,2",
        "C3,Mickey,Mouse,mouseman@mail.com,20"
    };

    vector<string> results;

    for (auto words : sentences) {
        stringstream  ss(words);
        string str;
        while (getline(ss, str, ',')) {
            results.push_back(str);
        }
    }

    //display result
    for (auto word : results) {
        cout << word << '\n';
    }

    return 0;
}
Run Code Online (Sandbox Code Playgroud)