C语言cin的用法:cin.fail()在C++中的含义

关于C语言cin的用法的问题,在googlecin中经常遇到,关于cin.fail()在C++中的含义的编程代码示例如下。

while (!correct)
    {   
        cout << "Please enter an angle value => ";
        cin >> value; //request user to input a value
        if(cin.fail()) // LINE 7
        {
            cin.clear(); // LINE 9
            while(cin.get() != '\n'); // LINE 10
            textcolor(WHITE);
            cout << "Please enter a valid value. "<< endl;
            correct = false;
        }
        else
        {
            cin.ignore(); // LINE 18
            correct =true;
        }
    }

嗨,这是我写的代码的一部分。这段代码的目的是限制用户输入数字,如 10,10.00 等,如果他们输入值,如(abc,!$@ 等)代码将要求用户重新输入值。

为了执行此功能(限制用户输入有效的 valus),我通过论坛获得一些提示和指南。

我认为我有责任学习和理解这些代码的作用...因为这是我第一次使用此代码。有人可以向我简要解释第 7,9,10 和 18 行中的代码是做什么的吗?特别是第 10 行

谢谢你的导游,我很感激!

2

cin.fail()告诉你在以前的输入操作中是否“失败”。我认为输入流有四个可识别的状态:badgoodeoffail(但是failbad可以同时设置,例如)。

cin.clear()将状态重置为good

while(cin.get() != '\n') ;将读取,直到当前输入行结束。

cin.ignore();将跳到下一个换行符,因此与while(cin.get() != '\n');非常相似。

整个代码也应该检查文件的结尾,或者如果没有给出正确的输入并且输入是“结束”(例如 CTRL-Z 或 CTRL-D 取决于平台),它将挂起(永远循环失败)。

1

// LINE 7:cin.fail()检测输入的值是否符合变量中定义的值。

// LINE 18:cin 将换行符留在流中。将 cin.ignore()添加到下一行将清除 / 忽略流中的换行符。

0

对于第 7 行和第 9 行,请阅读document

while(cin.get() != '\n'); // LINE 10

while中,它测试行cin.get()是否是空行,即只包含新行。

0

第 7 行:测试输入的数据是否正确(可以读为decltype(value))。如果流出现错误,则cin.fail()始终为true。稍后,在

第 9 行:您将cin状态从 bad 清除为 previous,normal 状态。(在错误后恢复)。在从 bad 状态恢复之前,您无法再读取数据。

第 10 行:你读到行尾。基本上你从输入中跳过一行

第 18 行:该行仅在输入的数据被纠正时才执行。它从 stdin 读取并丢弃一行。

本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处

(849)
Web技术的发展:编写WebPaint程序的技术
上一篇
打开正在运行的程序:如何确定屏幕保护程序正在运行
下一篇

相关推荐

发表评论

登录 后才能评论

评论列表(82条)