C++常见字符输入的做法
2016-04-12 21:08
330 查看
每次读取一个字符,直到遇到EOF的输入循环的基本设计如下:
可以在上述代码中使用一些简捷方式。!操作符可以将true或者false切换为true。可以使用次操作符将while测试改写为
cin.get(char)方法的返回值是一个cin对象。不过,istream类提供了一个可以将istream对象(如cin)切换为bool值的函数;当cin出现在需要bool值的地方(比如在while循环的测试条件中)时,该转换函数将被调用。另外如果最后一次读取成功了,则转换得到的bool值为true,否则为flase,这意味着可以将上述的while测试改写为这样
这比!cin.fail()和!cin.eof更通用,因为它可以检测到其他失败的原因,比如磁盘故障。
最后,由于cin.get(char)的返回值是cin,因此可以将循环精简成这种格式
这样,cin.get(char)只被调用一次,而不是两次:循环前一次,结束后一次。为判断循环测试条件,程序必须首先调用cin.get(ch)。如果成功,则将值放入ch中,然后,程序获得函数调用的返回值,即cin。接下来,程序对cin进行了bool转换,如果输入成功,则结果为true。否则为false。3条指导原则(确定结束条件,对条件进行初始化以及更新条件)全部被放在循环测试条件中。
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条指导原则(确定结束条件,对条件进行初始化以及更新条件)全部被放在循环测试条件中。
相关文章推荐