我希望能够解析一个字符串,例如:
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);
}