C++ 使用noskipws从ifstream读入字符串时为空字符串
最初问 如果我用以下代码向cin发送“Hello world”C++ 使用noskipws从ifstream读入字符串时为空字符串,c++,gcc,C++,Gcc,最初问 如果我用以下代码向cin发送“Hello world” string str,msg; getline(cin,str); stringstream ss(str); char c; while(ss >> noskipws >> c) msg += c; …结果是msg=“Hello World” 但是如果我使用stringc而不是charc,msg是空的 我正在与以下人员一起编译: gcc(Ubuntu 4.4.3-4ubuntu5)4.4.3 为什
string str,msg;
getline(cin,str);
stringstream ss(str);
char c;
while(ss >> noskipws >> c)
msg += c;
…结果是msg
=“Hello World”
但是如果我使用stringc
而不是charc
,msg
是空的
我正在与以下人员一起编译:
gcc(Ubuntu 4.4.3-4ubuntu5)4.4.3
为什么我会得到一个空字符串?这里有一个有趣的问题:
注意,许多提取操作认为白字符本身是终止字符,因此,使用SKIPWS标志禁用,<强>某些提取操作可能从流< /强>中提取任何字符。
如果要将令牌提取到字符串中,请删除noskipws
一般来说,你应该仔细考虑,然后坚持一个基于{行,基于令牌,或基于字符的}提取。 这里有一个有趣的例子:
注意,许多提取操作认为白字符本身是终止字符,因此,使用SKIPWS标志禁用,<强>某些提取操作可能从流< /强>中提取任何字符。
如果要将令牌提取到字符串中,请删除noskipws
一般情况下,你应该仔细考虑,然后坚持一个,基于行,基于令牌,或基于字符的提取。< / P>请不要(只)链接外部网站上的问题。请不要(只)链接到外部网站上的问题。