如何解决stringstream:在一个字符串中取多个整数并将它们返回给向量
我正在获取一个字符串并使用 stringstream 提取字符串中的整数,然后将它们推入向量中。当我不一定知道字符串中整数的确切数量时,我的问题是这样做。字符串可以是“23,45,68”,也可以是“-1,10,15,-22,199,12”。我的代码如下:
#include <sstream>
#include <vector>
#include <iostream>
using namespace std;
vector<int> parseInts(string str) {
vector<int>v;
char ch;
int a,b,c;
stringstream s(str);
s >> a >> ch >> b >> ch >> c;
v.push_back(a);
v.push_back(b);
v.push_back(c);
return v;
}
int main() {
string str;
cin >> str;
vector<int> integers = parseInts(str);
for(int i = 0; i < integers.size(); i++) {
cout << integers[i] << "\n";
}
return 0;
}
解决方法
我意识到 while 循环在碰到字符串中的“,”时就结束了。在循环中,我添加了将逗号放入字符持有者“ch”的代码这解决了问题:
#include <sstream>
#include <vector>
#include <iostream>
using namespace std;
vector<int> parseInts(string str) {
//cout << "str is " << str;
vector<int>v;
int x;
char ch;
stringstream num(str);
while (num >> x)
{
num >>ch;
v.push_back(x);
}
return v;
}
int main() {
string str;
cin >> str;
vector<int> integers = parseInts(str);
for(int i = 0; i < integers.size(); i++) {
cout << integers[i] << "\n";
}
return 0;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。