Чтение до конца строки в C ++ - PullRequest
5 голосов
/ 24 октября 2011

У меня есть такой текстовый файл:

Sting Другая строка 0 12 0 5 3 8Sting Другая строка 8 13 2 0 6 11

И я хочу посчитать, сколько там чисел.Я думаю, что лучше всего использовать цикл типа с условием окончания счета, после чего начинается другая строка, но я не знаю, как прекратить чтение в конце строки.

Заранее спасибо за помощь;)

Ответы [ 3 ]

11 голосов
/ 24 октября 2011

Разделите ваш input поток на строки

std::string line;
while (std::getline(input, line))
{
  // process each line here
}

Чтобы разбить строку на слова, используйте поток строк:

std::istringstream linestream(line); // #include <sstream>
std::string word;
while (linestream >> word)
{
  // process word
}

Вы можете повторить это для каждого слова, чтобы решить, содержит ли оно число. Поскольку вы не указали, являются ли ваши числа целыми или нецелыми, я предполагаю int:

std::istringstream wordstream(word);
int number;
if (wordstream >> number)
{
  // process the number (count, store or whatever)
}

Отказ от ответственности: этот подход не идеален. Он будет обнаруживать «цифры» в начале слов, таких как 123abc, он также разрешит формат ввода, такой как string 123 string. Также этот подход не очень эффективен.

4 голосов
/ 24 октября 2011

Почему бы вам не использовать getline()?

1 голос
/ 24 октября 2011

Конец строки представлен символом '\ n'.Поместите условие в ваш цикл while для завершения, когда оно встречает '\ n'

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