Чтение до конца строки в C

#c #file

#c #файл

Вопрос:

У меня есть текстовый файл, подобный этому :

Ввод другой строки 0 12 0 5 3 8
Ввод другой строки 8 13 2 0 6 11

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

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

Комментарии:

1. что у вас есть на данный момент?

Ответ №1:

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

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

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

 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 . Также этот подход не очень эффективен.

Ответ №2:

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

Ответ №3:

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