社区
工具平台和程序库
帖子详情
问个老问题了,有关cin
darcymei
2003-11-09 04:41:19
以前好想看过这样的帖子,找不到了。
int i;
while(cin>>i);
为什么要两次ctrl+z才能结束。
而且后一个ctrl+z还在cin中,如何清空输入流(这个方法很多,希望看到各种不同的,并请说说效率方面如何)。
...全文
257
13
打赏
收藏
问个老问题了,有关cin
以前好想看过这样的帖子,找不到了。 int i; while(cin>>i); 为什么要两次ctrl+z才能结束。 而且后一个ctrl+z还在cin中,如何清空输入流(这个方法很多,希望看到各种不同的,并请说说效率方面如何)。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
13 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
darcymei
2003-11-10
打赏
举报
回复
有一次是VC环境要求,能问一下为什么吗?
fierygnu
2003-11-10
打赏
举报
回复
推荐《The C++ Standard Library A Tutorial and Reference》
baizhj
2003-11-10
打赏
举报
回复
to mmlymlymly(mly),先编译连接,然后再运行,如果是在VC环境下,自然得按两次,因为有一次是VC环境要求的.
kurt8276
2003-11-09
打赏
举报
回复
你们我都不动
darcymei
2003-11-09
打赏
举报
回复
谢谢老大,还有个问题想问一下,对于标准库的学习您是怎么样的呢。是找本有关的书来看,还是直接看编译器的帮助手册(如msdn),我始终觉得前者太不完整,后者太不详细,直接看头文件一堆宏又看得人晕头转向。请问您有什么好方法吗?
短歌如风
2003-11-09
打赏
举报
回复
mmlymlymly你说的那个贴子我看过了, fierygnu的方法是我们用的。而更好的写法是:
cin.clear();//先清除错误位
cin.ignore(std::numeric_limits<std:streamsize>::max(), '\n');//无论行有多长……
与你的方法相比,这段代码可以在从文件输入时也有效。
你要注意,cin输入是以行为单位的,在执行这段时,缓冲区中的内容不会超过一行,并且一定会有一个换行符,所有这段代码是有效的。
在输入是stdin时,你的代码看来也有效,但我不知道是C标准规定的还是Windows系统的作用,如果是后者,我建议你把这种方法忘掉。即使使用这种方法,也不要忘了加一段注释,因为用seekg来实现这一功能远没有用ignore更容易懂。
darcymei
2003-11-09
打赏
举报
回复
to baizhj(baizhj) 说话负责点好伐,vc下须按2次,你有没有试过啊!
我没有bcc,那看来是vc的bug 了喽。
还有麻烦短歌老大帮忙看下
http://expert.csdn.net/Expert/topic/2427/2427751.xml?temp=2.953738E-02
那几种方法哪个比较好呢?
还有就是能不能谈谈您对cin或者流结构的一些看法,我看msdn总是看得很糊涂,这方面有介绍的书又不是很多,小弟先谢过了。
ssbull
2003-11-09
打赏
举报
回复
我也遇到这样的问题,总是想不通,可楼上两位老兄好像也没说明白原因:)
学习ing
短歌如风
2003-11-09
打赏
举报
回复
要注意的就是,在输入^Z之后,流处于EOF状态,要用clear方法恢复状态才能继续输入。
baizhj
2003-11-09
打赏
举报
回复
在Visual C++中,只按了一次就行了!不管是一次还是两次,是因为你的输入数据和i的数据类型不一样造成的,系统认为你的输入是非法输入,表示输入结束.
短歌如风
2003-11-09
打赏
举报
回复
#include <iostream>
#include <limits>
using std::cin;
using std::cout;
using std::endl;
int main(int argc, char* argv[])
{
int i;
char ch;
while(cin >> i)
cout << i << endl;
cout << "Input char:";
cin.clear();
cin>>ch;
cout << "char:" << ch << endl;
return 0;
}
没有问题。只用输入一次^Z。
用的是STLport 4.5.3,编译器BCC32 5.6。
rushinger
2003-11-09
打赏
举报
回复
坐在第二排,有人回答了好听得清楚些。
zhaochong12
2003-11-09
打赏
举报
回复
搬个小凳子,坐在第一排...
最有赛马
问题
(田忌赛马)算法设计.docx
田忌赛马
问题
是一个经典的算法设计
问题
,
问题
描述为:国王 A 和国王 B 都拥有 N 匹马,每匹马都有其速度,两人进行 N 场比赛,每次比赛双方各出一匹马,每匹马只能比一次。国王 A 通过某种特殊途径,已经预先打探到...
语言程序设计课后习题答案
当数据结构改变时,所有相关的处理过程都要进行相应的修改,每一种相对于
老
问题
的新方法都要带来额外的开销,程序的可重用性差。 由于图形用户界面的应用,程序运行由顺序运行演变为事件驱动,使得软件使用起来...
c++的
cin
导致超时
问题
如何解决c++中
cin
的输入缓慢
问题
。 昨天我做一道题,好不容易拼了
老
命把代码写出来,结果也是对的,提交却一直是tl。T_T. 关键的一个地方就是
cin
和scanf读入数据时的差异。具体因为什么我也不清楚,我只是个刚学c++...
关于C++中,使用getline函数来获取
cin
流时会自动跳过的
问题
搜了
老
半天百度后发现,是
cin
流在读取数据之后会把回车符之前的字符拿去传递给buf然后将回车符残留在
cin
流中,所以当getline在读取
cin
流的时候会第一个读到回车符随之而退出。 解决方法很简单...
关于流同步的取消
很多C++的初学者可能会被这个
问题
困扰,经常出现程序无故超时,最终发现
问题
处在
cin
和cout上,(甚至有些
老
oier也会被这个
问题
困扰,每次只能打scanf和printf,然后一堆的占位符巨麻烦),这是因为C++中,
cin
和...
工具平台和程序库
24,855
社区成员
27,330
社区内容
发帖
与我相关
我的任务
工具平台和程序库
C/C++ 工具平台和程序库
复制链接
扫一扫
分享
社区描述
C/C++ 工具平台和程序库
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章