拆分逗号分隔的字符串

新手上路,请多包涵

对 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"
   };

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

 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;

输出

A1
B1

预期目标:我希望将每个逗号分隔值添加到向量中。然后,调用类构造函数,将最后一个值从字符串转换为 int。

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

原文由 shell_surfer 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 638
1 个回答

试试这个片段:

 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;
}

原文由 seccpur 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题