C++ 使用noskipws从ifstream读入字符串时为空字符串

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 为什

最初问

如果我用以下代码向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

为什么我会得到一个空字符串?

这里有一个有趣的问题:

注意,许多提取操作认为白字符本身是终止字符,因此,使用SKIPWS标志禁用,<强>某些提取操作可能从流< /强>中提取任何字符。

如果要将令牌提取到字符串中,请删除
noskipws

一般来说,你应该仔细考虑,然后坚持一个基于{行,基于令牌,或基于字符的}提取。

这里有一个有趣的例子:

注意,许多提取操作认为白字符本身是终止字符,因此,使用SKIPWS标志禁用,<强>某些提取操作可能从流< /强>中提取任何字符。

如果要将令牌提取到字符串中,请删除
noskipws

一般情况下,你应该仔细考虑,然后坚持一个,基于行,基于令牌,或基于字符的提取。< / P>请不要(只)链接外部网站上的问题。请不要(只)链接到外部网站上的问题。