Wie anders ifstream Modi in C ++ verwenden?
Frage
- Nach der Referenz, wenn ich
ifstream infile ( "test.txt" , ifstream::in );
verwenden wird esAllow input operations on the stream.
Aber was sind einige der Beispiele für die „Eingabeoperationen“ sind? - Ist
ifstream infile ( "test.txt" , ifstream::in | ifstream::binary );
die richtige Syntax mehrere Flags zu benutzen? - Wird es einen Unterschied machen, wenn ich
ifstream::
änderniso::
?
Danke
Lösung
- Nach der Referenz, wenn ich ifstream infile verwenden ( "test.txt", ifstream :: in); es wird Eingabe zulassen Operationen auf dem Stream. Aber was ist einige der Beispiele für den „Eingang operations "?
Beim Lesen aus einer Datei, die alles, was ein Eingangsstrom unterstützen kann bedeuten würde. Siehe istream
Member-Funktionen. Normalerweise können Sie sowohl formatiert zu tun, (mit >>
) und unformatiert liest (mit read
). Denken Sie daran, dass ifstream
ist eine Spezialisierung der basic_ifstream
Vorlage für char
Typ. Je nach Bedarf, sagen UTF-16 codierte Datei zu lesen, können Sie eine andere Spezialisierung (wifstream
) oder sogar ein spezielles Gebietsschema verwenden (lesen Sie diese mehr über locales wissen).
- Ist ifstream infile ( "test.txt", ifstream :: in | ifstream :: binary); die richtige Syntax verwenden multiple Flaggen?
Ja.
- Wird es einen Unterschied machen, wenn ich ifstream ändern :: ISO ::?
Nein.
Andere Tipps
Stream-Operationen sind extraction <<
und insertion >>
. Wenn Sie das tun nach dem unter der Annahme,
file
ist von fstream
Typ:
file << 5 << 6.5 << "Hello World!"; // insertion of data (output)
file >> x >> y >> str; // exaction of data (input)
Sie können auch, befassen sich mit der stream
als binary stream
. In diesem Fall sieht es nicht wirklich wie ein „stream
“ von Daten, aber das gibt Ihnen direkten Zugriff auf die Daten. In einigen Fällen können Sie nicht den binären Modus verwenden, vor allem, wenn Sie Ihre Daten wie ein Netzwerk-Stream nicht verfügbar sind. Ein- und Ausbau, sind die beiden wichtigsten Operationen auf Streams.
ifstream
wird als input stream
standardmäßig erstellt. So std::ios::in
ist in diesem Fall überflüssig. Sie verwenden die Flags richtig.
alle Ströme erben von ios
. So sind die Fahnen in beiden Orten verfügbar, können Sie sie entweder von ios
abrufen können direkt oder von fstream
.