Как использовать различные режимы ifstream в c ++?

StackOverflow https://stackoverflow.com/questions/1611165

  •  05-07-2019
  •  | 
  •  

Вопрос

  1. Согласно ссылке, если я использую ifstream infile ( "test.txt" , ifstream::in ); это будет Allow input operations on the stream. Но каковы некоторые из примеров "операций ввода"?
  2. Является ifstream infile ( "test.txt" , ifstream::in | ifstream::binary ); правильный синтаксис для использования нескольких флагов?
  3. Будет ли что-то меняться, если я изменюсь ifstream:: Для iso:: ?

Спасибо

Это было полезно?

Решение

  1. Согласно ссылке, если я использую ifstream infile ( "test.txt" , ifstream::in ),;это позволит выполнять операции ввода в потоке.Но каковы некоторые из примеров "операций ввода "?

Чтение из файла, которое означало бы все, что может поддерживать входной поток.Видишь istream функции-члены.Как правило, вы можете выполнить оба форматирования (используя >>) и неформатированные чтения (с использованием read).Помни об этом ifstream является специализацией basic_ifstream шаблон для char Тип.В зависимости от ваших потребностей, скажем, для чтения файла в кодировке UTF-16, вам, возможно, придется использовать другую специализацию (wifstream) или даже использовать специальный языковой стандарт (читать это чтобы узнать больше о регионах).

  1. Является ли ifstream infile ( "test.txt" , ifstream::в | ifstream::двоичном файле);правильный синтаксис для использования нескольких флагов?

ДА.

  1. Будет ли это иметь значение, если я изменю ifstream::в исо::?

Нет.

Другие советы

Потоковые операции: extraction << и insertion >>. Когда вы делаете следующее, предполагая file имеет тип fstream:

file << 5 << 6.5 << "Hello World!"; // insertion of data (output)
file >> x >> y >> str; // exaction of data (input)

Вы также можете иметь дело с stream как binary stream. В этом случае это не похоже на & Quot; ifstream & Quot; данных, но это дает вам произвольный доступ к данным. В некоторых случаях вы не можете использовать двоичный режим, особенно если ваши данные недоступны как сетевой поток. Вставка и извлечение - это две основные операции над потоками.

input stream по умолчанию создается как std::ios::in. Таким образом, ios в этом случае является избыточным. Вы правильно используете флаги.

все потоки наследуются от <=>. Таким образом, флаги доступны в обоих местах, вы можете получить их непосредственно из <=> или из <=>.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top