Come utilizzare diverse modalità ifstream in c ++?
Domanda
- Secondo il riferimento, se uso
ifstream infile ( "test.txt" , ifstream::in );
saràAllow input operations on the stream.
Ma quali sono alcuni degli esempi di " operazioni di input " ;? -
ifstream infile ( "test.txt" , ifstream::in | ifstream::binary );
È la sintassi giusta per usare più flag? - Farà la differenza se cambio
ifstream::
iniso::
?
Grazie
Soluzione
- Secondo il riferimento, se uso ifstream infile (" test.txt ", ifstream :: in); consentirà input operazioni sullo stream. Ma cosa sono alcuni esempi dell'input " operazioni quot &;?
Lettura da un file che significherebbe tutto ciò che può supportare un flusso di input. Vedi istream
funzioni membro. In genere, è possibile eseguire letture formattate (utilizzando >>
) e non formattate (utilizzando read
). Ricorda che ifstream
è una specializzazione del modello basic_ifstream
per il tipo char
. A seconda delle esigenze, supponiamo di leggere il file codificato UTF-16, potrebbe essere necessario utilizzare una specializzazione diversa (wifstream
) o persino utilizzare una locale speciale (leggere questo per saperne di più sulle localizzazioni).
- È ifstream infile (" test.txt ", ifstream :: in | ifstream :: binary); la sintassi giusta per usare multiple bandiere?
Sì.
- Farà la differenza se cambio ifstream :: in iso ::?
No.
Altri suggerimenti
Le operazioni di streaming sono extraction <<
e insertion >>
. Quando si esegue quanto segue assumendo
file
è di fstream
tipo:
file << 5 << 6.5 << "Hello World!"; // insertion of data (output)
file >> x >> y >> str; // exaction of data (input)
Puoi anche trattare stream
come binary stream
. In tal caso, non sembra davvero un & Quot; ifstream
& Quot; di dati ma ciò ti dà accesso casuale ai dati. In alcuni casi non è possibile utilizzare la modalità binaria, soprattutto se i dati non sono disponibili come un flusso di rete. Inserimento ed Estrazione, sono le due operazioni principali sui flussi.
input stream
viene creato come std::ios::in
per impostazione predefinita. Pertanto, ios
è ridondante in questo caso. Stai usando le bandiere correttamente.
tutti i flussi ereditano da <=>. Pertanto, i flag sono disponibili in entrambi i punti, puoi recuperarli da <=> direttamente o da <=>.