2011-12-25 24 views
0

当初お問い合わせhere。私は次のコードでCINする "こんにちは、世界" を送信した場合noskipwsでifstreamから文字列を読み込むときに空の文字列

...

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

... msg = "Hello World"で結果。

char cの代わりにstring cを使用すると、msgは空です。

私はでコンパイルしています:私は空の文字列を取得しないのはなぜ gccの(Ubuntuの4.4.3-4ubuntu5)4.4.3

?ここで

+1

外部のウェブサイトの質問にはリンクしないでください。 – Johnsyweb

答えて

4

は興味深いquote from cplusplus.comです:多くの抽出操作が無効になっskipwsフラグで、therfore、終端文字として空白を自分で考えることを

お知らせ、いくつかの抽出操作は、ストリームからまったく文字を抽出していないこと

トークンを文字列に抽出する場合は、noskipwsを削除します。

一般的に、慎重に検討し、{行ベース、トークンベース、または文字ベース}抽出のいずれかに固執する必要があります。

関連する問題