Я кодирую программу, которая считывает данные непосредственно с пользовательского ввода, и задавался вопросом, как я мог (без циклов) читать все данные до тех пор, пока EOF не будет со стандартного ввода. Я рассматривал использование cin.get(input, '\0')
, но '\0'
на самом деле не символ EOF, который только что читается до EOF или '\0'
, в зависимости от того, что наступит раньше.Как читать до EOF от cin в C++
Или использует петли единственный способ сделать это? Если да, то какой лучший способ?
Что-то быть осторожным здесь, когда вы читаете из файлов, которые были направлены в конвейер с помощью стандартного ввода, является что в этом и большинстве ответов будет добавлен дополнительный фид строки в конце вашего ввода. Не все файлы заканчиваются строкой, но каждая итерация цикла добавляет «std :: endl» в поток. Это не может быть проблемой в большинстве случаев, но если проблема с целостностью файла, это может вернуться, чтобы укусить вас. – Zoccadoum
Это не должно быть самым верным ответом. См. Ниже ответ wiki сообщества. Также, может быть, посмотрите этот вопрос: https://stackoverflow.com/questions/3203452/how-to-read-entire-stream-into-a-stdstring – loxaxs