稍后输入ctrl + x后如何再次cin(cin << [

问题描述 投票:0回答:1
这是我的代码

stream& operator>>(istream& is, fraction& f) { is >> f.numerator; cout << "/"; is >> f.denominator; }

...

void insertFraction(fraction*& f, int& n, fraction x) { int m = n + 1; fraction* fNew = (fraction*)realloc(f, m * sizeof(fraction)); if (fNew != NULL) { fNew[n] = x; n++; f = fNew; } }

...

void enterFraction(fraction*& f, int& n) { fraction x; f = NULL; n = 0; int i = 1; cout << "Enter fraction " << i << " : \n"; while (cin >> x) { insertFraction(f, n, x); i++; cout << "Enter fraction " << i << " or enter Ctrl + X to stop: \n"; } }

问题是,在调用函数enterFraction之后,由于Ctrl + X,我可以再次使用cin,请帮助我在函数enterFraction之后再次使用cin。谢谢!
c++ struct istream
1个回答
0
投票
我想您是在询问如何使cin出现错误后恢复。为此,您必须致电

cin.clear();

此外,丢弃错误后可能留下的任何未决输入也是一个好主意。对于该电话

cin.ignore(std::numeric_limits<std::streamsize>::max());

#include <limits>类需要numeric_limits
© www.soinside.com 2019 - 2024. All rights reserved.