Самый простой способ получить слова одной строки из istream в вектор? - PullRequest
2 голосов
/ 04 февраля 2011

istream имеет оператор >>, но пропускает новые строки, как пропуски пробелов.Как я могу получить список всех слов только в одну строку, в вектор (или что-нибудь еще, что удобно использовать)?

Ответы [ 3 ]

2 голосов
/ 04 февраля 2011

Одна возможность (хотя и гораздо более многословная, чем хотелось бы):

std::string temp;
std::getline(your_istream, temp);

std::istringstream buffer(temp);
std::vector<std::string> words((std::istream_iterator<std::string>(buffer)),
                                std::istream_iterator<std::string>());
1 голос
/ 04 февраля 2011

Я бы предложил использовать getline для буферизации строки в string, а затем stringstream для анализа содержимого этого string. Например:

string line;
getline(fileStream, line);

istringstream converter(line);
for (string token; converter >> token; )
    vector.push_back(token);

Остерегайтесь использования функций чтения строк C в C ++. Функции std::string I / O намного безопаснее.

0 голосов
/ 04 февраля 2011

Вы можете вызвать istream :: getline - прочитает в массив символов

Например:

char buf[256];
cin.getline(buf, 256);

И если вы хотите использовать потоковый совместимый метод доступа для индивидууматокены в строке, рассмотрим istringstream

...