问一个低级的问题

chuan7461 2010-11-04 05:41:02
在c++中,当我使用getline(cin,str);cout<<str;时,在控制台上输入一个字符串以后要按两次回车,才会输出str的内容;我想问的是:是不是getline函数把第一个回车当成一个字符读入了,作为他的结束符,系统把第二个回车当成执行程序的命令了?
请高手们指点下。。。。3Q!!
...全文
107 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
chuan7461 2010-11-05
  • 打赏
  • 举报
回复
我用的是vc6.0,貌似都没怎么解决好。。。。。
jikeyuan1 2010-11-04
  • 打赏
  • 举报
回复
不知道LZ是什么编译器啊 我的C++2008没有LZ 的问题 LZ 还是换编译器吧
cin.clear()是个好习惯 还有LZ 的问题好像很多人都有
chuan7461 2010-11-04
  • 打赏
  • 举报
回复
源代码是这样的:

#include<iostream>
#include<string>
using namespace std;
int main(){
string str;
getline(cin,str);
//cin.clear();
cout<<str<<endl;
return 0;
}

中间那个cin.clear();加上和没加上结果都一样;都需要两次回车才可以~~~~这是为什么呀???
歧路逍遥 2010-11-04
  • 打赏
  • 举报
回复
7楼正解!在原代码上加上cin.clear() 函数清空键盘缓冲区或者用更新马上就可以看到输出的!
wokonglinglude 2010-11-04
  • 打赏
  • 举报
回复
我怎么没出现你说的那种 情况 你帖下你的代码
wokonglinglude 2010-11-04
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 chenhui880412 的回复:]
我运行没有出现你说的这个问题啊
[/Quote]我只是猜的,估计错了,我运行下,共同学习。
tangyf2009 2010-11-04
  • 打赏
  • 举报
回复
请及时调用cin.clear() 函数清空键盘缓冲区
i_Seven_ 2010-11-04
  • 打赏
  • 举报
回复
我运行没有出现你说的这个问题啊
tangyf2009 2010-11-04
  • 打赏
  • 举报
回复
清空键盘缓冲区 然后键盘输入到键盘缓冲区 最后在键盘缓冲区查找特定字符,终止条件是找到该字符或为NULL ,删除 类似于文件流中的fflush
wokonglinglude 2010-11-04
  • 打赏
  • 举报
回复
等待的是你的\n 你试着把你输入的字符加上\n 看看还用第二个回车吗
wokonglinglude 2010-11-04
  • 打赏
  • 举报
回复
我认为 你输入字符串的第一个回车是执行cin>> 输入的是字符
第二个还是cin>> 此时输入的是\n
chuan7461 2010-11-04
  • 打赏
  • 举报
回复
那也就是说我说对了?
wokonglinglude 2010-11-04
  • 打赏
  • 举报
回复
getline 顾名思义 是获取一整行的字符串 遇到换行\n结束

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧