读书人

cin的根本有关问题

发布时间: 2012-03-04 11:13:34 作者: rapoo

cin的根本问题?
都说cin、cout为标准输入、输出流!那么多流怎么理解?

这样一个语法,不是很明白:
while(std::cin)
{
std::cin > > str; //前面已经声明string str
}
这里的语法是流状态的检查。请问怎么让流处于错误状态的。有怎么恢复正确状态。
如果我在上面的代码后加
std::cout < < str;
再次输出string对象时,无法再次输出。

谁能给我一个流清楚的理解。很模糊!
谢谢

[解决办法]
去看看《C++ Primer》关于流的章节,知道点基础知识再来问吧。
不可能在csdn上什么都讲的。
[解决办法]
大概如此,具体看书

cin或cout对象包含一个描述流状态的数据成员.
流状态由三个io_base元素组成:eofbit,badbit,failbit,每个元素都是一位
可以是1(设置)或者是0(清除).
当cin操作到达文件末尾时,它将设置eofbit
当cin操作未能读取到与其的字符时或试图读取不可访问的文件,写入保护的磁盘,
将设置failbit.一些无法诊断的失败破坏流时,badbit元素将被设置.
当3个状态为设置为0时,说明一切顺利,程序可以检查流状态.
eof()如果eofbit被设置,则返回ture
fail()如果failbit被设置,则返回ture
bad()如果badbit或者failbit被设置,则返回ture
设置状态(两种方法)
clear();默认参数0,这时候将清除全部三个状态位.
clear(eofbit);将状态设置为eofbit,即eofbit将被设置,其他两个状态位被清除
setstate();只是影响到参数中设置已设置的位.
setstate(eofbit);将设置eofbit,而不会影响到其他位,如果failbit被设置,
则还是被设置.
[解决办法]
输入 Ctrl + C

读书人网 >C++

热点推荐