Mittwochabend, 2. August 2023
Heute habe ich diese beiden Codezeilen gesehen:
std::ofstream file("example.txt", std::ios_base::out);
std::ofstream file("example.txt", std::ios::out);
Dies warf bei mir einige Fragen auf:
Warum verwende ich manchmal ios_base::out und manchmal ios::out?
Gibt es einen Unterschied zwischen ios_base::out und ios::out?
Es hat ein oder zwei Stunden gedauert, bis ich es herausgefunden habe....
Inhaltsverzeichnis
- abschließend
- Was sind die I/O-Flusskontrollflags der ios_base-Klasse?
- Was sind die I/O-Flusskontrollflags der iOS-Klasse?
- beweisen, dass sie gleich sind
abschließend
Es gibt keinen Unterschied zwischen ios_base::out und ios::out, sie sind genau gleich.
Da sie alle ganzzahlige Konstanten sind und die gleichen Werte haben, können sie sich gegenseitig vollständig ersetzen.
Was die Frage angeht, wann Sie welches verwenden sollten, verwenden Sie meiner Meinung nach das, was Ihnen gefällt, da sie wirklich gleich sind.
Was sind die I/O-Flusskontrollflags der ios_base-Klasse?
std::ios_base::in
: Eingabemodus, der angibt, dass der Stream im Lesemodus geöffnet ist.std::ios_base::out
: Ausgabemodus.std::ios_base::app
: Anhängemodus, was bedeutet, dass der Stream im Schreibmodus geöffnet wird und Daten an das Ende der Datei angehängt werden, ohne den ursprünglichen Inhalt zu löschen.std::ios_base::trunc
: Truncate-Modus, was bedeutet, dass der Stream im Schreibmodus geöffnet und der ursprüngliche Inhalt der Datei gelöscht wird.std::ios_base::binary
: Binärmodus, öffnen Sie den Stream im Binärmodus.std::ios_base::ate
: Positionieren Sie den Dateizeiger nach dem Öffnen des Streams am Ende der Datei.
Was sind die I/O-Flusskontrollflags der iOS-Klasse?
std::ios::in
: Eingabemodus, der angibt, dass der Stream im Lesemodus geöffnet ist.std::ios::out
: Ausgabemodus.std::ios::app
: Anhängemodus, was bedeutet, dass der Stream im Schreibmodus geöffnet wird und Daten an das Ende der Datei angehängt werden, ohne den ursprünglichen Inhalt zu löschen.std::ios::trunc
: Truncate-Modus, was bedeutet, dass der Stream im Schreibmodus geöffnet und der ursprüngliche Inhalt der Datei gelöscht wird.std::ios::binary
: Binärmodus, öffnen Sie den Stream im Binärmodus.std::ios::ate
: Positionieren Sie den Dateizeiger nach dem Öffnen des Streams am Ende der Datei.
beweisen, dass sie gleich sind
#include<iostream>
#include<fstream>
int main(){
printf("ios_base::in的值:%d\n",std::ios_base::in);
printf("ios::in的值:%d\n",std::ios::in);
printf("-------------\n");
printf("ios_base::out的值:%d\n",std::ios_base::out);
printf("ios::out的值:%d\n",std::ios::out);
printf("-------------\n");
printf("ios_base::app的值:%d\n",std::ios_base::app);
printf("ios::app的值:%d\n",std::ios::app);
printf("-------------\n");
printf("ios_base::trunc的值:%d\n",std::ios_base::trunc);
printf("ios::trunc的值:%d\n",std::ios::trunc);
printf("-------------\n");
printf("ios_base::binary的值:%d\n",std::ios_base::binary);
printf("ios::binary的值:%d\n",std::ios::binary);
printf("-------------\n");
printf("ios_base::ate的值:%d\n",std::ios_base::ate);
printf("ios::ate的值:%d\n",std::ios::ate);
printf("-------------\n");
}