您的位置:首页 > 其它

string 类型终端输入 字符串时 不能有空格的解决办法

2012-11-10 22:59 555 查看
方法一:可以这样解决:

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) 函数;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐