社区
C++ 语言
帖子详情
看C++ primer,一直在郁闷一个问题
yangyu0806
2005-01-20 04:50:13
书里面经常出现这样的写法
string text;
while(cin >> text)
dosomething(text);
这个循环好像不能结束的说
...全文
455
23
打赏
收藏
看C++ primer,一直在郁闷一个问题
书里面经常出现这样的写法 string text; while(cin >> text) dosomething(text); 这个循环好像不能结束的说
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
23 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
lw1a2
2005-01-24
打赏
举报
回复
说Ctrl+Z的朋友试过在XP下的效果吗
qufan
2005-01-24
打赏
举报
回复
老话重提哈
cin在出现eof和格式不匹配的时候结束哈
vanter
2005-01-24
打赏
举报
回复
ctrl+z 真老
achengzz
2005-01-23
打赏
举报
回复
学习!
liuxuyu
2005-01-22
打赏
举报
回复
引"还是改成自己认为合理的写法吧,这本书的自由度很高,也是这本书的优点,书中的题目也是这样的呀"
呵呵,我觉得也是这样,自己想清楚的问题才叫学明白了东西!~~~~~~~
lw1a2
2005-01-22
打赏
举报
回复
#include <iostream>
using namespace std;
int main()
{
string buf,word;
while(cin>>buf)
{
if (buf==";")break;
word=buf;
}
cout<<word<<endl;
system("pause");
}
cyfdecyf
2005-01-21
打赏
举报
回复
应该是编译器的问题。
看见你用"void main"我猜你用的是VC吧?VC下编译我也是输入2次crtl-z才推出,用g++时只要输入1次就行。
cbofnh
2005-01-21
打赏
举报
回复
说的好精辟。
zhengguoshan
2005-01-21
打赏
举报
回复
都说了,帮头帮着顶一下up
tip9914
2005-01-21
打赏
举报
回复
int main()
{
string str;
int i=0;
char c;
// c='\n';
while(cin)
{
if(cin.get()=='\n')
break;
cout<<i<<endl;
i++;
}
这样可以实现课本上的等待输入。。
自己研究一下就知道应该怎样了
yangyu0806
2005-01-21
打赏
举报
回复
有没有明白的关注以下这里呀
SmartWhidbey
2005-01-21
打赏
举报
回复
这是伪代码。再说,可以结束的了。CIN接受一个空格的时候,就会跳出来的。我的。
qufan
2005-01-21
打赏
举报
回复
我嘿真是粗心啊
我一直以为他们写的是伪码捏
所以自己改了改
没想倒这个问题呵呵
study兼顶了
flamingheart
2005-01-20
打赏
举报
回复
对亚,我试了也是这样,怎么回事啊?
dddd1234
2005-01-20
打赏
举报
回复
哈哈,和我问的问题一样呀
“daylove(爱晶如梦)(昨夜西风调碧树,独上高楼,望尽天涯路……)” 说的那个我早就看过了,但是XP下就是会出现^Z。
现在只能用if (str==";") break;来跳出循环,但是有的程序本身就是考察的这方面的问题,再用它就不适合了
yangyu0806
2005-01-20
打赏
举报
回复
我明白什么意思了,所以做个小例子去测试了一下,但是又发现一个问题
程序是这样的
#include <string>
#include <iostream>
using namespace std;
void main()
{
string str;
while(cin >> str)
cout<<str<<endl;
cout<<"ok";
}
输出结果:
abc回车
abc
tttt回车
tttt
^Z(这个输入就是ctrl+Z)
^Z
ok
为什么我第一次输入ctrl+Z之后没有反应,我第二次再输入的时候才退出啊
xuelong_zl
2005-01-20
打赏
举报
回复
还是改成自己认为合理的写法吧,这本书的自由度很高,也是这本书的优点,书中的题目也是这样的呀
avalonBBS
2005-01-20
打赏
举报
回复
ctrl-z
daylove
2005-01-20
打赏
举报
回复
用什么方法结束输入循环while(cin)?
新近大家见到的C++书籍中,常见的输入循环类似while(cin){}或者while(cin>>ch){}等类似的形式,大多数书籍中并没有特别的指出该循环的结束条件,导致程序执行时无法结束循环。
实际上,这个循环结构并不像想象中的那样是一个死循环,只需要通过简单的输入EOF(End of File,文件结束标志)即可。
从标准输入设备输入EOF是一个平台相关的问题:
1)在DOS/WINDOWS平台下,使用PC键盘ctrl-z可以输入EOF;
2)在Linux平台下,在标准的默认设置下,使用PC键盘ctrl-d同样可以输入EOF。(然而,由于Linux下键盘的布局似乎可以重新定义,我不是Linux的专家,可以自行查阅帮助页进一步确认是否存在这种特殊情况。)
3)对于非PC键盘,例如UNIX的字符终端,不排除没有ctrl键的可能性,同样需要查阅系统手册确认如何输入EOF,一般情况下,退出shell(logout)的热键使用EOF。
这个方法的依据在于std::basic_ios<>(它是istream的基类)设计了一个void*和bool的隐式转型,从而使流的状态可以直接用作条件表达式,
template < class Ch, class Tr = char_traits < Ch > >
class basic_ios : public ios_base
{
public:
// ...
bool fail() const; // 测试状态,下一次操作将失败
operator void* () const { return !fail(); }
bool operator! () const { return fail(); }
// ...
};
因此,如果cin处于错误状态,那么上述循环将结束。导致输入流状态错误的情况有很多种,得到EOF作为输入是其中的一种,发生设备错误也是一种(例如和键盘设备通信中断)。
特别是,输入无效的数据也会导致输入流错误,然而要求输入字符串和字符的情况下,所有的键盘输入都是合法的,因而在这里并不能用来结束循环。因此输入EOF成了合法的结束循环的唯一选择。
yangyu0806
2005-01-20
打赏
举报
回复
cin方法怎样返回空啊-_-!!
加载更多回复(2)
C++
Primer
第五版 练习9.52 解答
当你在
一个
左括号之后看到
一个
右括号,从stack中pop对象,直至遇到右括号,将左括号也一起弹出栈。让后将
一个
值(括号内的运算结果)push到栈中,表示
一个
括号化的(子)表达式已经处理完毕,被其运算结果所替代。 ...
《
C++
Primer
》学习之基础知识及所用该注意的
问题
多维数组:多维数组最简单的理解是数组的数组,严格的说在
C++
[转]
C++
学习小结 - 学习札记 -
C++
博客
导读: 关注此博客已经很久了,但是由于校园网的原因,导致无法快速访问,所以
一直
用抓虾在看,但是觉得还是有必要申请
一个
。我发现此博客上的技术性都很强,很值得学习。废话少说了,既然申请了此博客,全当
c++
...
C++
学习经验小结
《
C++
Primer
Plus》 5th (当时以为是《
C++
Primer
》)是自己看的第一本
C++
的书籍,此书看得我头昏眼花的,整个看书的时间就有半年,由于当时过分注重细节,而且图速度,没能很好的实践,也就是
一个
一知半懂,但是...
语言程序设计经典书籍《
C++
Primer
》
C++
基础知识:函数,类 .........
C++
这个词在中国大陆的程序员圈子中平日被读做“C加加”,而东方的程序员平日读做“C plus plus”,“CPP”。 它是一种用使非常泛广的计算机编程语言。
C++
是一种静态数据类型检查的、支撑多重编程范式的通用程序...
C++ 语言
64,676
社区成员
250,490
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章