Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/149.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
关于cin.clear()的问题 我正在读《加速C++》这本书。(我的问题在第57页,如果你们有这本书的话)_C++_Inputstream - Fatal编程技术网

关于cin.clear()的问题 我正在读《加速C++》这本书。(我的问题在第57页,如果你们有这本书的话)

关于cin.clear()的问题 我正在读《加速C++》这本书。(我的问题在第57页,如果你们有这本书的话),c++,inputstream,C++,Inputstream,问题如下: 我们有一个函数可以读取学生成绩: ... while (in >> x) { // in and x are defined as an istream& and as a double hw.push_back(x); // hw is vector defined as vector<double>& } in.clear(); ... 。。。 而(in>>x){//in和x被定义为一个istream&和一个doubl

问题如下: 我们有一个函数可以读取学生成绩:

...
while (in >> x) {    // in and x are defined as an istream& and as a double
    hw.push_back(x);    // hw is vector defined as vector<double>&
}
in.clear();
...
。。。
而(in>>x){//in和x被定义为一个istream&和一个double
hw.push_back(x);//hw是定义为向量的向量&
}
in.clear();
...
现在,在书中以及在cplusplus.com参考上都说明了清除功能重置所有错误状态,并且输入现在再次准备好读取一些输入。 问题是,如果我提出:

int a = 0;
cin >> a;
cout << a << endl;
inta=0;
cin>>a;
cout var){
向量推回(var);
}
对于(int f=0;fcout调用
clear
清除失败读取设置的错误状态。它不会处理输入流中可能存在的字符

如果错误状态是由于未能读取double而导致的,则下一个字符很可能也将作为整数失败

如果你尝试

char ch;
cin >> ch;
我相信这样会更好


否则,您必须
忽略
某些字符以清除不可读的输入。

调用
清除
清除读取失败设置的错误状态。它不会处理输入流中可能存在的字符

如果错误状态是由于未能读取double而导致的,则下一个字符很可能也将作为整数失败

如果你尝试

char ch;
cin >> ch;
我相信这样会更好


否则,您必须
忽略
一些字符,以消除不可读的输入。

代码示例中的while循环将读取整数值,直到输入结束或读取时出现错误,例如,给出一个不能作为整数出现的字符,如“q”

发生错误时,您可能有机会通过调用
clear()
,然后从
cin
的输入缓冲区中删除有问题的字符,从该错误中恢复:

char dummy;
cin >> dymmy;

然后您可以再次读取
int

代码示例中的while循环读取整数值,直到输入结束或读取时出现错误,例如,给出一个不能作为整数出现的字符,如“q”

发生错误时,您可能有机会通过调用
clear()
,然后从
cin
的输入缓冲区中删除有问题的字符,从该错误中恢复:

char dummy;
cin >> dymmy;

然后您可以再次阅读
int

cin.clear()之后,流应该再次处于工作状态,问题可能在于您没有显示的代码;发布显示您问题的经典“最小可编译示例”。好的,我添加了一个我自己编写的示例。在
cin.clear()之后
流应该再次处于工作状态,问题可能在于您没有显示的代码;发布经典的“最小可编译示例”这说明了您的问题。好的,我添加了一个我自己编写的示例。是否有任何东西可以在1函数中执行.ignore和.clear操作?否,但您可以轻松编写一个。:-)是否有任何东西可以在1函数中执行.ignore和.clear操作?否,但您可以轻松编写一个。:-)