stringstream:在一个字符串中获取多个整数并将它们返回给向量
stringstream: taking multiple ints in a string and returning those to vector
我正在获取一个字符串并使用 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;
}
我正在获取一个字符串并使用 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;
}