C++常见字符输入的做法

每次读取一个字符,直到遇到EOF的输入循环的基本设计如下:

cin.get(ch);
while (cin.fail() == false)
{
    ...
    cin.get(ch);
}

可以在上述代码中使用一些简捷方式。!操作符可以将true或者false切换为true。可以使用次操作符将while测试改写为

while (!cin.fail())

cin.get(char)方法的返回值是一个cin对象。不过,istream类提供了一个可以将istream对象(如cin)切换为bool值的函数;当cin出现在需要bool值的地方(比如在while循环的测试条件中)时,该转换函数将被调用。另外如果最后一次读取成功了,则转换得到的bool值为true,否则为flase,这意味着可以将上述的while测试改写为这样

while(cin)

这比!cin.fail()和!cin.eof更通用,因为它可以检测到其他失败的原因,比如磁盘故障。
最后,由于cin.get(char)的返回值是cin,因此可以将循环精简成这种格式

while (cin.get(ch))
{
    ...
}

这样,cin.get(char)只被调用一次,而不是两次:循环前一次,结束后一次。为判断循环测试条件,程序必须首先调用cin.get(ch)。如果成功,则将值放入ch中,然后,程序获得函数调用的返回值,即cin。接下来,程序对cin进行了bool转换,如果输入成功,则结果为true。否则为false。3条指导原则(确定结束条件,对条件进行初始化以及更新条件)全部被放在循环测试条件中。

你可能感兴趣的:(C++,常见字符输入做法)