从cin获取输入并将其存储在char变量中

时间:2015-10-07 15:24:18

标签: c++ char

我正在使用cin进行输入并将其存储到char变量中。我的问题是,是否有任何输入可能导致Out-String返回true。

我知道尝试将诸如cin.fail()之类的输入存储到int变量中会失败,但是在任何情况下都可以使用char变量吗?

3 个答案:

答案 0 :(得分:0)

我猜不是因为一个char变量只带了给定输入中的第一个字符,无论输入多长或者是什么类型(int,long,double ..)

答案 1 :(得分:0)

不,只有在读取输入流时出现逻辑错误才会设置failbit,AKA,有人会撕掉包含您正在阅读的文件的USB闪存盘。 ;)

答案 2 :(得分:0)

vstack的重载采用operator>>遵循格式化输入函数的正常行为,即他们调用char或{{1}执行提取。当然,如果遇到rdbuf()->sbumpc(),则设置rdbuf()->sgetc()。如果其中一个函数抛出异常,则设置eof。如果设置了其中任何一个,则设置eofbit。没有证据表明操作会失败。 (这在C ++ 11草案标准的[istream]部分中有所介绍。)对于其他类型,如badbitfailbit用于转换字符(类似于int) 。当然,转换可能会失败,但如果输入已经是do_get(),则无需转换。

现在这些评论具有误导性。 CTRL + C 会在Linux中终止应用程序。 CTRL + Z 会在某些操作系统上发送一个表示EOF的字符。

你甚至可以使用表情符号,它可以工作:

scanf

输入char输出" Huzzah!"如预期的那样。