在C++中,如何使用应用于string对象的函数输入string对象,要包含空格,而且要按ctrl+z退出输入

如题所述

#include <string>
using namespace std;

int main(int argc, char* argv[])
{
string s;
getline(cin, s);

return 0;
}追问

getline遇到ctrl+z不会退出的,按回车才会退出

追答

按2次Ctrl+Z试试,我测试了下Ctrl+Z之后再输入的字符是不会保存在string中的,说明已经退出输入了

追问

按2次Ctrl+Z的确可以,但是第一个Ctrl+Z也被保存在字符串里了

追答

这个是跟环境有关系了,是getline函数的一个Bug,在VC++ .NET中有修正,要解决的话,可以改..\Microsoft Visual Studio\VC98\Include\STRING 文件,如下
else if (_Tr::eq((_E)_C, _D))
{_Chg = true;
// _I.rdbuf()->snextc(); //这行注释掉,改成下面一行
_I.rdbuf()->sbumpc();
break; }

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-03-20
cin.get(s,n);
//s字符数组名;n是字符串最大长度追问

不规定最大长度可以吗

追答

这是cin流函数的默认参数,可以再用strlen()动态求,没办法
可以试试cin.get()

第2个回答  2012-03-21
你说的是MFC?
相似回答
大家正在搜