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。谢谢!
cin
出现错误后恢复。为此,您必须致电cin.clear();
此外,丢弃错误后可能留下的任何未决输入也是一个好主意。对于该电话
cin.ignore(std::numeric_limits<std::streamsize>::max());
#include <limits>
类需要numeric_limits
。