为了账号安全,请及时绑定邮箱和手机立即绑定

程序中出现两次莫名的回车?

这是程序中的一段,运行下来,到了输入name后还需要点击两次回车才有下面的输入内容,那么问题来了,我明明 只在输入name后面加了个endl,为什么需要两次回车才能继续运行呢? string name; cout<<"please input your name "; getline(cin,name); if(name.empty()) cout<<"input is NULL"<<endl; if(name=="imooc") cout<<"your name is administrator"<<endl;

正在回答

5 回答

c++的标准库模板函数getline在读到限定符后还要读取额外字符

解决方法:进入X:\Program Files\Microsoft Visual Studio\VC98\Include目录(VC6.0安装的地方),用记事本打开string(注意,不是string.h),然后找到以下代码段.

  1. else if (_Tr::eq((_E)_C,_D))

  2. {_Chg = true;

  3. _I.rdbuf()->snextc(); // 把这一行注释掉,也可删掉

  4. _I.rdbuf()->sbumpc(); //添加这一行,这行本来没有

  5. break;

  6. }

0 回复 有任何疑惑可以回复我~

我给大家解释下意思吧:症状:
c++的标准库模板函数getline在读到限定符后还要读取额外字符...
解决方法:
else if (_Tr::eq((_E)_C, _D))
                 {_Chg = true;
               //  _I.rdbuf()->snextc(); /* 把这一行注释掉,添加下一行.*/ 
     _I.rdbuf()->sbumpc();
                 break; }
修改系统头文件时大家要小心点...
现状:
微软已经确认这是他们产品中的'臭虫'(bug),这个bug已经在Microsoft Visual C++ .NET得到修正.
0 回复 有任何疑惑可以回复我~
#1

海岸边滴树

c++的标准库模板函数getline在读到限定符后还要读取额外字符 解决方法:进入X:\Program Files\Microsoft Visual Studio\VC98\Include目录(VC6.0安装的地方),用记事本打开string(注意,不是string.h),然后找到以下代码段. else if (_Tr::eq((_E)_C,_D)) {_Chg = true; _I.rdbuf()->snextc(); // 把这一行注释掉,也可删掉 _I.rdbuf()->sbumpc(); //添加这一行,这行本来没有 break; }
2020-09-27 回复 有任何疑惑可以回复我~

我也是

0 回复 有任何疑惑可以回复我~

我也是需要敲两次回车

0 回复 有任何疑惑可以回复我~

程序没有问题呀,我重打了一遍代码,一次回车就行

0 回复 有任何疑惑可以回复我~
#1

小庄周 提问者

我输入数据之后敲了一次回车,没有显示,再敲一次才有下面的运算
2017-06-26 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C++远征之封装篇(上)
  • 参与学习       103410    人
  • 解答问题       701    个

封装--面向对象的基石,本教程力求帮助小伙伴们即学即会

进入课程

程序中出现两次莫名的回车?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信