我希望能够解析一个字符串,例如:

inputStr = "abc 12 aa 4 34 2 3 40 3 4 2 cda t 4 car 3"

分成单独的 vector (字符串 vector 和整数 vector ),使得:
strVec = {"abc", "aa", "cda", "t", "car"};
intVec = {12, 4, 34, 2, 3, 40, 3, 4, 2, 4, 3};

有什么好的方法可以做到这一点?我对stringstream有点熟悉,并且想知道是否可以执行以下操作:
std::string str;
int integer;
std::vector<int> intVec;
std::vector<std::string> strVec;
std::istringstream iss(inputStr);

while (!iss.eof()) {
    if (iss >> integer) {
        intVec.push_back(integer);
    } else if (iss >> str) {
        strVec.push_back(str);
    }
}

我已经尝试过达到这种效果,但是该程序似乎进入了某种停止状态(?)。任何建议,不胜感激!

最佳答案

iss >> integer失败时,流中断,并且iss >> str将继续失败。一种解决方案是在iss.clear()失败时使用iss >> integer:

if (iss >> integer) {
    intVec.push_back(integer);
} else {
    iss.clear();
    if (iss >> str) strVec.push_back(str);
}

10-08 00:42