Como usar diferentes modos ifstream em C ++?
Pergunta
- De acordo com a referência, se eu usar
ifstream infile ( "test.txt" , ifstream::in );
vaiAllow input operations on the stream.
Mas o que são alguns dos exemplos das "operações de entrada"? - é
ifstream infile ( "test.txt" , ifstream::in | ifstream::binary );
a sintaxe direito de usar vários sinalizadores? - Será que vai fazer a diferença se eu mudar
ifstream::
paraiso::
?
Obrigado
Solução
- De acordo com a referência, se eu usar infile ifstream ( "test.txt", ifstream :: in); Ele permitirá entrada operações no fluxo. Mas o que são alguns dos exemplos do "input operações "?
Leitura de um arquivo que significaria tudo um fluxo de entrada pode suportar. Veja as funções de membro istream
. Normalmente, você pode fazer as duas coisas formatado (usando >>
) e não formatado lê (usando read
). Lembre-se que ifstream
é uma especialização do modelo basic_ifstream
para o tipo char
. Dependendo de suas necessidades, dizer para ler UTF 16 arquivo codificado, você pode ter que usar uma especialização diferente (wifstream
) ou mesmo usar um local especial (leia este para saber mais sobre locais).
- É infile ifstream ( "test.txt", ifstream :: nos | ifstream :: binário); a sintaxe direito de uso múltiplo bandeiras?
Sim.
- Será que vai fazer a diferença se eu mudar ifstream :: para iso ::?
Não.
Outras dicas
operações de Fluxo são extraction <<
e insertion >>
. Quando você faz o seguinte assumindo
file
é do tipo fstream
:
file << 5 << 6.5 << "Hello World!"; // insertion of data (output)
file >> x >> y >> str; // exaction of data (input)
Você poderia também, lidar com a stream
como um binary stream
. Nesse caso, ele realmente não se parece com um "stream
" de dados, mas que lhe dá acesso aleatório aos dados. Em alguns casos, você não pode usar o modo binário, especialmente se seus dados não está disponível como uma corrente de rede. Inserção e extração, são os dois principais operações sobre fluxos.
ifstream
é criado como um input stream
por padrão. Então, std::ios::in
é redundante neste caso. Você está usando as bandeiras corretamente.
Todos os fluxos Herdar do ios
. Assim, as bandeiras estão disponíveis em ambos os lugares, você pode recuperá-los de ios
diretamente ou de fstream
.