方法一:可以这样解决:
string str;
char c;
while((c=cin.get())!='\n')
{
str=str+c;
}
方法二:
string str;
getline(cin,str);
cout<<str;
可以输入带空格的字符串了,但在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;
}
解决办法如下:
症状:
c++的标准库模板函数getline在读到限定符后还要读取额外字符...
解决方法:进入X:\Program Files\Microsoft Visual Studio\VC98\Include目录(VC6.0安装的地方),用记事本打开string(注意,不是string.h),然后找到以下代码段.
现状:微软已经确认这是他们产品中的'臭虫'(bug),这个bug已经在Microsoft Visual C++ .NET得到修正.
另外,当在 case 语句中有上述命令时,一般会自动跳过,而不执行,原因,缓冲区未清空,需要fflush(stdin),来手动清空。解决办法:
执行 fflush(stdin) 函数;