全新的 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 我理解我的问题类似于迭代字符串单词的最优雅的方法 主要区别在于提供的解决方案不适用于逗号分隔的列表,以及遍历数组/向量。
试试这个片段:
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)