Ich habe gerade angefangen zu fragen - wie ist eigentlich std::fstream
geöffnet mit beiden std::ios::in
und std::ios::out
eigentlich soll funktionieren? Was soll es tun? Schreibe etwas (zum Beispiel) in eine leere Datei, dann lese ... was? Nur geschriebener Wert? Wo wäre die Datei "Zeiger"/"Cursor"? Vielleicht die Antworten schon da draußen, aber ich hätte es einfach nicht finden können.Wie soll std :: fstream sowohl ein- als auch ausgehen?
Antwort
Was ist std::fstream
?
std::fstream
ist eine bidirektionale Datei-Stream-Klasse. Das heißt, es bietet eine Schnittstelle für die Eingabe und Ausgabe von Dateien. Es wird häufig verwendet, wenn ein Benutzer von derselben externen Sequenz lesen und in dieselbe schreiben muss.
Wenn eine bidirektionale Dateistrom Instanziieren (im Gegensatz zu std::ofstream
oder std::ifstream
), die openmodes ios_base::in
und ios_base::out
sind standardmäßig angegeben. Dies bedeutet, dass diese:
std::fstream f("test.txt", std::ios_base::in | std::ios_base::out);
das gleiche ist wie
std::fstream f("test.txt");
One beiden Optionen angeben würde, wenn sie benötigen auch einig Nicht-Standard-openmodes hinzufügen wie trunc
, ate
, app
oder binary
. Der ios_base::trunc
openmode wird benötigt, wenn Sie beabsichtigen, eine neue Datei für bidirektionale I/O zu erstellen, da der ios_base::in
openmode die Erstellung einer neuen Datei deaktiviert.
Bidirectional I/O
Bidirectional I/O ist die Verwendung eines bidirektionalen Stroms für Eingang und Ausgang. In IOStreams pflegen die Standard-Streams ihre Zeichenfolgen in einem Puffer, in dem sie als Quelle oder Senke für Daten dienen. Für Ausgabeströme gibt es einen "put" -Bereich (der Puffer, der Zeichen für die Ausgabe enthält). Für Eingabeströme gibt es ebenfalls den "Get" -Bereich.
Im Fall von std::fstream
(eine Klasse für beide Eingabe und Ausgabe), hält es einen gemeinsamen Dateipuffer, der jeweils die Get und Put-Bereich darstellt. Der Positionsindikator, der die aktuelle Position in der Datei markiert, wird durch die beiden Ausgabeoperationen und beeinflusst. Als solches, um I/O korrekt auf einem bidirektionalen Strom zu führen, gibt es bestimmte Regeln, die Sie folgen müssen:
- Wenn Sie eine Lese nach einem Schreib- oder umgekehrt durchzuführen, sollte der Strom wieder neu positioniert werden.
- Wenn eine Eingabeoperation das Ende der Datei erreicht, ist die Ausführung eines Schreibvorgangs direkt danach in Ordnung.
Dies bezieht sich nur auf std::fstream
. Die obigen Regeln werden für std::stringstream
nicht benötigt.
Ich hoffe, dass diese Ihre Fragen beantworten. Wenn Sie mehr haben, können Sie einfach in den Kommentaren fragen.
- 1. DOMPDF Seitenausrichtung sowohl Querformat als auch Hochformat
- 2. Funktion, die sowohl lvalue als auch rvalue Argumente akzeptiert
- 3. Brauche ich sowohl jdk als auch jre?
- 4. Ein Fenster, das sich sowohl modal als auch nichtmodal verhält
- 5. Kann ein App-Dienst sowohl Mobilgeräte als auch Websites unterstützen?
- 6. Wie Sie sowohl String als auch Double in Java
- 7. Sowohl Dns.GetHostAddress als auch Dns.GetHostEntry geben nur die IPv4-Adresse zurück. Wie bekomme ich sowohl ipv4- als auch ipv6-Adressen?
- 8. Wie kann ich CSS sowohl vertikal als auch horizontal ausrichten?
- 9. std :: fstream auf Windows-Netzwerk teilen
- 10. Soll die Blog-Indexseite sowohl für strukturierte Daten als auch für einzelne Artikelseiten optimiert werden?
- 11. Wie installiere ich sowohl java7 als auch java 8?
- 12. Wie unterstützt man sowohl IPv4 als auch IPv6 auf Java
- 13. Numpy Argmax. Wie berechne ich sowohl max als auch argmax?
- 14. Abrufen von Dateideskriptor von einem std :: fstream
- 15. FILE * von einem std :: fstream erhalten
- 16. Wie kann in Prolog sowohl ein variables Ergebnis als auch ein wahres/falsches Ergebnis zurückgegeben werden?
- 17. Wie speichert man ein Modell, das sowohl vorhandene Daten als auch neue Daten enthält?
- 18. Modellierungstools, die sowohl relationale als auch LDAP verstehen
- 19. Warum einige Programme sowohl .lib als auch .dll benötigen ...
- 20. Warum brauchen wir sowohl iterierbare als auch Iteratorkonzepte?
- 21. Sie können sowohl filtern als auch in ddply zusammenfassen?
- 22. Benachrichtigungsleiste zeigt sowohl große als auch kleine Symbole
- 23. Sind sowohl csrf-Token als auch Captcha erforderlich?
- 24. Übereinstimmender beliebiger Text (sowohl Symbole als auch Leerzeichen) mit ANTLR?
- 25. Kann Hyperlinktext sowohl Wörter als auch dekorative Bilder enthalten?
- 26. Haben sowohl mousedown/mouseup als auch dblclick in jQuery
- 27. Preferences API funktioniert sowohl auf Android als auch auf PC
- 28. benötigt meine Meteor App sowohl MONGO_OPLOG_URL als auch MONGO_URL
- 29. Schreiben Sie Metadaten sowohl in JPG als auch in PNG
- 30. Festlegen von Attributen sowohl in FXML als auch in CSS