2011-12-25 201 views
0

最初問here使用noskipws從ifstream讀取字符串時的空字符串

如果我送的 「Hello world」 與下面的代碼CIN ...

string str,msg; 
getline(cin,str); 
stringstream ss(str); 
char c; 
while(ss >> noskipws >> c) 
    msg += c; 

...結果msg = "Hello World"

但是如果我用string c而不是char c,msg爲空。

我與編譯: GCC(Ubuntu的4.4.3-4ubuntu5)4.4.3

爲什麼我得到一個空字符串?

+1

請不要(只)鏈接到外部網站的問題。 – Johnsyweb 2011-12-25 22:02:36

回答

4

這裏有一個有趣的quote from cplusplus.com

注意到,許多開採作業考慮空格自己作爲終止字符,therfore,與skipws標誌禁用,一些提取操作可​​以從流中所有的提取沒有字符

如果要將標記提取到字符串中,請除去noskipws

通常,您應該仔細考慮,然後堅持{基於行,基於標記的或基於字符的}提取之一。