社区
C++ 语言
帖子详情
cin的根本问题?
wpalhm
2007-09-28 09:54:11
都说cin、cout为标准输入、输出流!那么多流怎么理解?
这样一个语法,不是很明白:
while(std::cin)
{
std::cin >> str; //前面已经声明string str
}
这里的语法是流状态的检查。请问怎么让流处于错误状态的。有怎么恢复正确状态。
如果我在上面的代码后加
std::cout << str;
再次输出string对象时,无法再次输出。
谁能给我一个流清楚的理解。很模糊!
谢谢
...全文
178
10
打赏
收藏
cin的根本问题?
都说cin、cout为标准输入、输出流!那么多流怎么理解? 这样一个语法,不是很明白: while(std::cin) { std::cin >> str; //前面已经声明string str } 这里的语法是流状态的检查。请问怎么让流处于错误状态的。有怎么恢复正确状态。 如果我在上面的代码后加 std::cout << str; 再次输出string对象时,无法再次输出。 谁能给我一个流清楚的理解。很模糊! 谢谢
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
wpalhm
2007-09-28
打赏
举报
回复
谢谢。十分感谢!
taodm
2007-09-28
打赏
举报
回复
回车-ctrl_z/F6-回车。VC6的话可能还需要再加一次ctrl_z-回车
wpalhm
2007-09-28
打赏
举报
回复
vc控制台下。输入ctrl+c窗口就自动关闭了?把我搞糊涂了。。。
uoyevoli
2007-09-28
打赏
举报
回复
另外我在 XP 系统 VS2005 中实验,如下代码可以在 Ctrl + Z 和 Ctrl + C 时正常退出循环:
while(std::cin)
{
std::cin >> str; //前面已经声明string str
}
uoyevoli
2007-09-28
打赏
举报
回复
输入 Ctrl + C
wpalhm
2007-09-28
打赏
举报
回复
谢谢你的详细讲解。但是我还是有点模糊。就这样的代码怎么退出循环
while(std::cin >> str, !std::cin.eof())
{
std::cout << str; //前面已声明std::sting str
}
我在这里始终卡着走不出来。为什么输入了ctrl+z后,还跳不出循环呢?比如下面的代码就不能执行了。
ckt
2007-09-28
打赏
举报
回复
大概如此,具体看书
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被设置,
则还是被设置.
wpalhm
2007-09-28
打赏
举报
回复
谢谢解答。只是我很久以来都被这个问题困惑。十分感谢你的回答。
taodm
2007-09-28
打赏
举报
回复
去看看《C++ Primer》关于流的章节,知道点基础知识再来问吧。
不可能在csdn上什么都讲的。
wpalhm
2007-09-28
打赏
举报
回复
给自己顶一下
1.C++之
cin
(五)——关于
cin
,
cin
.get(),
cin
.getline()
C++输入过程中,是把输入加载到缓冲区中,然后对缓冲区中的字符进行读取。...本文将简单介绍
cin
,
cin
.get(),
cin
.getline()的基本用法,从
根本
上解释它们对缓冲区数据的处理方法。1.
cin
的基本用法结束条件:...
关于解决C++中
cin
输入错误的办法
问题
描述: 利用
cin
获取输入时,输入类型错误可能会导致出现异常情况 解决方案: 1.
cin
后,判断输入是否出错 a.直接使用
cin
.fail(),有错就返回True b.我在网上看见有人用
cin
.rdstate()来判断是否出错,于是就上...
清理
cin
输入缓冲区_
cin
的用法及清空输入缓冲区
问题
问题
描述:输入数据时希望有个合法性检验的
问题
,如果输入的数据不合法则程序提示重新输入。最初代码如下:#include #include using std::
cin
;using std::cout ;using std::endl;using std::vector ;int main(){int...
C++输入
cin
,
cin
.get(),
cin
.getline()详细比较及例子
最近在学习C++ ,打好基础是最重要 C++输入过程中,是把输入加载到缓冲区中,然后对缓冲区中的字符进行读取。
cin
,
cin
,get(),
cin
....本文将简单介绍
cin
,
cin
.get(),
cin
.getline()的基本用法,从
根本
上解释它们对...
cin
.clear
cin
.sync 等函数用法
一、
cin
.clear()、
cin
.sync()
cin
.clear()是用来更改
cin
的状态标示符的。
cin
.sync()是用来清除缓存区的数据流的。 如果标示符没有改变那么即使清除了数据流也无法输入。所以两个要联合起来使用。...
C++ 语言
64,647
社区成员
250,476
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章