Пустая строка при чтении в строку из ifstream с помощью noskipws - PullRequest
0 голосов
/ 26 декабря 2011

Первоначально спросили здесь .

Если я отправлю "Hello world" в cin со следующим кодом ...

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

... приведет к1008 * = "Hello World".

Но если я использую string c вместо char c, msg будет пустым.

Я компилирую с помощью: gcc (Ubuntu 4.4.3-4ubuntu5) 4.4.3

Почему я получаю пустую строку?

1 Ответ

4 голосов
/ 26 декабря 2011

Вот интересная цитата от cplusplus.com :

Обратите внимание, что многие операции извлечения рассматривают сами пробелы как завершающий символ, поэтому с отключенным флагом skipws, некоторые операции извлечения могут вообще не извлекать символы из потока .

Удалить noskipws, если вы хотите извлечь токены в строку.

Как правило,Вы должны тщательно обдумать, а затем придерживаться одного из {извлечения на основе строки, на основе токена или на основе символа}.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...