C ++ файловый поток

0

Может ли кто-нибудь объяснить, как c++ читает файлы? Я не прошу код читать в файле, но после переменной ifstream >>, каковы правила, как c++ захватывает данные?

Является ли файл таким, как чтение cin в пользовательском вводе? означает, что он останавливается после каждого пробела? Что происходит после того, как оно достигает конца строки? автоматически ли оно переходит к следующей строке или мне нужно написать код для этого? Я знаю, что он останавливается после eof, но я не уверен в процессе извлечения данных, и я не могу писать код, если я не понимаю этот процесс. благодаря

Теги:
file
stream

4 ответа

4
Лучший ответ

Да, оператор ввода >> всегда "токенизирует" (останавливается) в пробеле. И чтение из любого входного потока работает одинаково.

За очень хорошую информацию я предлагаю эту ссылку. Особенно эта ссылка для оператора ввода очень подробно.

  • 0
    Спасибо, ответ выше известного печально известного арабского также был очень хорошим.
1

Операторы ввода и вывода формата iostream по существу определяются в терминах функций библиотеки C strtol/strtoul/strtod (см. 22.4.2.1.2) и sprintf (см. 22.4.2.2.2) соответственно.

  • 0
    Downvoter, хочешь объяснить свое возражение?
1

В основном, когда вы вызываете ifstream f; , вы создаете переменную с доступом к библиотеке. Оттуда вы должны объявить свои намерения этой переменной. Использование f.open(fileName, ios::in); вы можете ввести имя_файла с помощью оператора >>, который фактически работает как cin. Он останавливается в белых местах, как и следовало ожидать. Как только он достигает конца строки, он продолжается до тех пор, пока у вас есть код, который просит оператора извлечь больше. Вам не нужно ничего делать, чтобы сказать, чтобы перейти к следующей строке.

Более подробную информацию можно найти здесь.

0

В C/C++, как правило, нет никакой разницы во входном потоке (кроме деталей, например: поиск).

Имея C++, есть два выдающихся способа ввода:

  • Форматированный вход
  • Неформатированный ввод

Все форматированные операции ввода включают операторный stream& operator >> (stream&, T). Однако не все stream& operator >> (stream&, T) выполняют форматированный вход (например, некоторые включают манипуляторы или буфер потока)

Каждый форматированный ввод начинается с пропусков пробелов и останавливается при первом символе, не являющемся частью входного формата (Примечание. Это может быть любой символ, он не ограничен пробелами).

Неформатированный ввод считывает все символы (не игнорирует пробел) и останавливается, если запрашивается количество символов, или поток достигает конца (EOF). Специализированные функции (например, std :: getline) могут останавливаться на раннем этапе и игнорировать символ условия разграничения.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню