社区
工具平台和程序库
帖子详情
问个老问题了,有关cin
darcymei
2003-11-09 04:41:19
以前好想看过这样的帖子,找不到了。
int i;
while(cin>>i);
为什么要两次ctrl+z才能结束。
而且后一个ctrl+z还在cin中,如何清空输入流(这个方法很多,希望看到各种不同的,并请说说效率方面如何)。
...全文
277
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
打赏
举报
回复
搬个小凳子,坐在第一排...
详解
cin
输入的空格
问题
,
cin
.get与
cin
.getline函数的关联与区别
对
cin
输入的空格
问题
、
cin
错误和对
cin
.get( ) 与
cin
.getline( )函数两者的理解
C++中的
cin
,
cin
.getline, getline等混合使用时不能输入直接执行下一行的
问题
在学习C++时,经常会遇到一个
问题
,就是需要混合使用
cin
>>,
cin
.getline(), getline()时,有时会碰到不等你输入,就直接运行下一行的情况,如下面代码所示: // test.cpp: 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <iostream> #include <cstring>...
C++中
cin
、
cin
.get()、
cin
.getline()、getline()函数的用法
C++中
cin
、
cin
.get()、
cin
.getline()、getline()函数的用法
C++编程积累——解决
cin
>>num输入
问题
,
cin
无效,无法从屏幕输入(
cin
状态清除)
问题
描述 有时候会遇到这样的
问题
: 想要从屏幕输入值(
cin
>>num,num是int类型变量),来对输入值进行处理。但在实际运行中,输入操作却被忽略了,无法进行输入操作。但整个程序又没有语法类
问题
。 如下边下边例子,是对一串数字进行二分查找某个特定值: 程序过程: 1、从屏幕输入一串有序数字,放入一个vector对象中 2、从屏幕输入一个特定值,在vector对象中...
关于C++的
cin
的错误输入的
问题
以及解决办法
最近学校期末用C++做一个实训项目,在用到
cin
获得用户输入的时候考虑到用户输入的不确定性,要规范
cin
返回的值,否则会造成意想不到的结果。 先来一个简单的例子: int num_input;
cin
>>num_input; while(num_input<=0) { cout<<"请输入正数"<<endl;
cin
>>num_input;...
工具平台和程序库
24,851
社区成员
27,330
社区内容
发帖
与我相关
我的任务
工具平台和程序库
C/C++ 工具平台和程序库
复制链接
扫一扫
分享
社区描述
C/C++ 工具平台和程序库
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章