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

来源:互联网 发布:手机网络打电话软件 编辑:程序博客网 时间:2024/06/11 22:02

方法一:可以这样解决:

        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) 函数;