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