一个很麻烦的小问题,找了许久的答案~~~激动ing~~
int main()
{
string str;
std::cout<<"Please input your name:\n";
getline(cin,str);
std::cout<<"Hello,"<<str<<"!!\n";
return 0;
}
执行后会出现需要两次输入回车才能将str中的内容输出。
原因分析:这是微软的STL的一个bug, 它在读stream 的时候,总要试图预读一个char 来判断是否eof。对文件操作没问题,对键盘输入,就会出现打两次回车的问题。
解决办法:
1、找到VC++安装目录 \\Program Files\Microsoft Visual Studio\VC98\Include\ 在该目录下找到string 文件,不是string.h 文件。用VC++打开。
2、修改文件中的以下部分:
else if (_Tr::eq((_E)_C, _D))
{_Chg = true;
// _I.rdbuf()->snextc(); /* 把这一行注释掉,添加下一行.*/
_I.rdbuf()->sbumpc(); //添加该行或用该行替换上行。
break; }
3、保存文件,问题解决。
转载于:https://blog.51cto.com/sdampttery/554837