首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在while (cin<<x)循环中输入ctrl +x后如何再次cin (cin A struct)

在while (cin<<x)循环中输入ctrl +x后如何再次cin (cin A struct)
EN

Stack Overflow用户
提问于 2020-05-26 13:26:02
回答 1查看 34关注 0票数 0

这是我的代码

代码语言:javascript
复制
stream& operator>>(istream& is, fraction& f) 
    {
        is >> f.numerator;
        cout << "/";
        is >> f.denominator;
    }

..。

代码语言:javascript
复制
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;
    }
}

..。

代码语言:javascript
复制
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之后,我可以再次使用cin,因为Ctrl + X,请帮助我在函数enterFraction之后再次使用cin。谢谢你!!

EN

回答 1

Stack Overflow用户

发布于 2020-05-26 13:40:03

我想你是在问如何让cin在出错后恢复。为此,您必须调用

代码语言:javascript
复制
cin.clear();

此外,丢弃错误后可能留下的任何挂起的输入也可能是一个好主意。对于该呼叫

代码语言:javascript
复制
cin.ignore(std::numeric_limits<std::streamsize>::max());

您需要为numeric_limits类执行#include <limits>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62015200

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档