gpt4 book ai didi

c++ - 无法从 stringstream 解析数字并正确输出它们 C++

转载 作者:行者123 更新时间:2023-11-30 05:39:35 25 4
gpt4 key购买 nike

#include <iostream>        
#include <vector>
#include <string>
#include <sstream>

using namespace std;
int main(){
string a = " test 1234 test 5678";
stringstream strstr(a);
string test;
vector<int>numvec;
int num;
while(strstr>>num || !strstr.eof()){
if(strstr.fail()){
strstr.clear();
string kpz;
strstr>>kpz;

}
numvec.push_back(num);
}
for(int i = 0;numvec.size();++i){
cout<<numvec[i]<<'\t';
}
}

在这个程序中,我试图从其中包含字符串单词的字符串流中仅解析值“1234”和“5678”并输出这些值。我把这些值放在一个整数 vector 中,稍后我从 vector 中输出这些值,但是,输出是在前几行中,它向我显示了这些值,但是后来,我得到了很多零,我从未见过这样的错误看起来很有趣,所以我的问题是:为什么我没有得到想要输出的值“1234”和“5678”? (这是为了让程序只显示那些值,而不是错误导致的大量零)以及为什么会发生此错误?

对于程序:http://ideone.com/zn5j08

在此先感谢您的帮助。

最佳答案

问题是您的循环在检测到失败状态后没有 continue,这意味着 num 的值被插入 numvec 即使在失败之后。

以下是解决此问题的方法:

while(strstr>>num || !strstr.eof()) {
if(strstr.fail()){
strstr.clear();
string kpz;
strstr>>kpz;
continue; // <<== Add this
}
numvec.push_back(num);
}

现在,仅当 strstr 未处于失败状态时,该值才会被推送到 numvec,从而解决您的问题。

Fixed demo.

关于c++ - 无法从 stringstream 解析数字并正确输出它们 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32297743/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com