Как использовать различные режимы ifstream в c ++?
Вопрос
- Согласно ссылке, если я использую
ifstream infile ( "test.txt" , ifstream::in );
это будетAllow input operations on the stream.
Но каковы некоторые из примеров "операций ввода"? - Является
ifstream infile ( "test.txt" , ifstream::in | ifstream::binary );
правильный синтаксис для использования нескольких флагов? - Будет ли что-то меняться, если я изменюсь
ifstream::
Дляiso::
?
Спасибо
Решение
- Согласно ссылке, если я использую ifstream infile ( "test.txt" , ifstream::in ),;это позволит выполнять операции ввода в потоке.Но каковы некоторые из примеров "операций ввода "?
Чтение из файла, которое означало бы все, что может поддерживать входной поток.Видишь istream
функции-члены.Как правило, вы можете выполнить оба форматирования (используя >>
) и неформатированные чтения (с использованием read
).Помни об этом ifstream
является специализацией basic_ifstream
шаблон для char
Тип.В зависимости от ваших потребностей, скажем, для чтения файла в кодировке UTF-16, вам, возможно, придется использовать другую специализацию (wifstream
) или даже использовать специальный языковой стандарт (читать это чтобы узнать больше о регионах).
- Является ли ifstream infile ( "test.txt" , ifstream::в | ifstream::двоичном файле);правильный синтаксис для использования нескольких флагов?
ДА.
- Будет ли это иметь значение, если я изменю 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
в этом случае является избыточным. Вы правильно используете флаги.
все потоки наследуются от <=>. Таким образом, флаги доступны в обоих местах, вы можете получить их непосредственно из <=> или из <=>.