我正在使用cin进行输入并将其存储到char变量中。我的问题是,是否有任何输入可能导致Out-String
返回true。
我知道尝试将诸如cin.fail()
之类的输入存储到int变量中会失败,但是在任何情况下都可以使用char变量吗?
答案 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]部分中有所介绍。)对于其他类型,如badbit
,failbit
用于转换字符(类似于int
) 。当然,转换可能会失败,但如果输入已经是do_get()
,则无需转换。
现在这些评论具有误导性。 CTRL + C 会在Linux中终止应用程序。 CTRL + Z 会在某些操作系统上发送一个表示EOF的字符。
你甚至可以使用表情符号,它可以工作:
scanf
输入char
输出" Huzzah!"如预期的那样。