重新学习c++ day03

c++ primer plus 的第五章

循环和文本输入

  • for循环和while循环都是入口条件循环,do while循环是出口条件循环

1. 使用原始的cin输入

  • 程序经常要使用循环来读取来自键盘的文本输入,则必须有办法知道何时停止读取,一种方法是选择某个特殊的字符(如“#”)——有时被称为哨兵字符,将其作为停止标记.
  • cin在读取char值时将忽略空格和换行符

2. 使用cin.get(char)

  • cin.get(ch)将检查每个字符,包括空格、制表符、换行符。

3. 文件尾的条件

  • 哨兵字符的做法很难令人满意,因为它可能就是合法输入。
  • 如果输入来自文件,则可以使用检测文件尾(EOF)来结束输入。很多操作系统都允许通过键盘来模拟文件尾条件。
  • cin中有两个方法来模拟文件尾条件,分别是cin.eof()、cin.fail(),两个函数的返回值都是bool类型的。
  • 当遇到EOF时,cin.eof()返回ture,否则返回false。
  • cin.fail()是用来判断一个流是否异常,如果failbit被设置,则返回true,否则返回false,EOF也会使failbit被设置,所以也可以用来检测EOF,但cin.fail()比cin.eof()功能更强。

4. 常见的字符输入做法

  • 基本的设计:
cin.get(ch);
while(cin.fail() == false)
{
    ...
    cin.get(ch);
}
  • 改进设置:
    • while(!cin.fail())
    • while(cin)//比!cin.fail()和!cin.eof()更通用,因为它可以检测到其他失败原因,如磁盘故障
    • while(cin.get(ch))

2016.10.03




控制台输入的常用代码(仅对不合法输入给出了代码):

for(int i = 0; i < limit; i++)
{
    cout << "Enter value #" << (i + 1) << ": ";
    cin >> temp;
    if (!cin)  //if enter the bad input
    {
        cin.clear();
        while (cin.get() != '\n')
            continue;
        cout << "Bad input: input process terminated." << endl;
        break;
    }
    else
        ...
}

2016.10.29

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值