读书人

getline(cin,XX)的有关问题

发布时间: 2013-03-21 10:08:17 作者: rapoo

getline(cin,XX)的问题
#include<iostream>
#include<string>
using namespace std;
int main()
{
string name,dessert;
cout<<"Enter your name:\n";
getline(cin,name);
cout<<"Enter your favorite dessert:\n";
getline(cin,dessert);
cout<<"I have some delicious "<<dessert;
cout<<" for you, "<<name<<".\n";
return 0;
}
这里为什么输入第一行按回车后还要按一次回车才可以执行下面的语句呢 C++ string getline
[解决办法]
代码没有问题。

Enter your name:
a
Enter your favorite dessert:
b
I have some delicious b for you, a.

[解决办法]
你用的编译器是vc6.0吧 我也出现过这种情况的,我以前看贴吧里有人说:
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;
}
修改系统头文件时大家要小心点...
现状:微软已经确认这是他们产品中的'臭虫'(bug),这个bug已经在Microsoft Visual C++ .NET得到修正.
参考网址:http://virus.blog.51cto.com/51437/20433
我看c++primer plus 用vc6.0调试上面的代码 有一些代码的确无法实现 可能就是VC的问题

读书人网 >C++

热点推荐