wie kann ich öffnen und Lesen einer Datei mit ifstream in C++?
Ich möchte eine Datei öffnen und eine Zeile Lesen. Es wird nur eine Zeile in der Datei, so dass ich nicht wirklich brauchen, um sorgen über die Schleife, obwohl für zukünftige Referenz wäre es gut zu wissen, wie zu Lesen mehrerer Zeilen.
int main(int argc, const char* argv[]) {
//argv[1] holds the file name from the command prompt
int number = 0; //number must be positive!
//create input file stream and open file
ifstream ifs;
ifs.open(argv[1]);
if (ifs == NULL) {
//Unable to open file
exit(1);
} else {
//file opened
//read file and get number
...?
//done using file, close it
ifs.close();
}
}
Wie kann ich dies tun? Außerdem bin ich im Umgang mit dem Datei-öffnen-korrekt in Bezug auf die erfolgreiche öffnen?
Dank.
Haben Sie ein C++ - Buch? Wenn dem so ist, hast du auch schon in dem Kapitel der Diskussion der standard-I/O-Bibliothek? Wenn nicht, würde ich dringend empfehlen, sich eines der einführenden Bücher aufgeführt, die in The Definitive C++ Book Guide and List.
Ich habe kein C++ Buch. Ich war auf der Suche auf cplusplus.com/reference/iostream/istream/getline und ich war verwirrt durch die
Wenn du auf den
Ich habe kein C++ Buch. Ich war auf der Suche auf cplusplus.com/reference/iostream/istream/getline und ich war verwirrt durch die
streamsize n
parameter.Wenn du auf den
streamsize
Seite, es sagt: "Der Typ ist eine von der Implementierung definierte synonym für eine der signierten basic-Integrale Typen (in der Regel signed int oder signed long)."n
ist die Größe des Puffers, die s
Punkte zu. Wenn Sie die Globale getline
anstatt das Mitglied getline
, dann brauchen Sie sich nicht zu kümmern, dass parameter, weil die Globale getline
liest in einem std::string
Objekt eher als ein Puffer, und std::string
Objekte sind skalierbar.InformationsquelleAutor Hristo | 2010-07-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ein paar Dinge:
Lesen Sie eine Zahl mit den
>>
stream-extraction operators:ifs >> number
.Den standard-Bibliothek-Funktion getline liest eine Zeile aus einer Datei, wenn Sie möchten, dass eine volle Linie der text.
Zu überprüfen, ob die Datei geöffnet ist, schreiben Sie einfach
if (ifs)
oderif (!ifs)
. Lassen Sie sich die== NULL
.Müssen Sie nicht explizit schließen Sie die Datei am Ende. Das wird automatisch geschehen, wenn die
ifs
variable geht out of scope.Überarbeiteten code:
Standardmäßig Leerraum wird stillschweigend fallen gelassen durch den operator>>
InformationsquelleAutor John Kugelman
Für das, was du hier tust, ist einfach:
Extrahiert eine Zahl aus dem stream und speichern Sie es in 'Zahl'.
Looping, kommt auf die Inhalte an. Wenn alle zahlen, so etwas wie:
Funktionieren würde, zum speichern einer Reihe von zahlen in einem array. Dies funktioniert, da die Extraktion des Betreibers Nebeneffekt ist wahr, wenn die Extraktion erfolgreich ist, oder false, wenn es scheitert (wegen Ende der Datei oder Datenträger-Fehler, etc.
Hihi, das nächste mal einfach ninja Bearbeiten es direkt ein und sagen nichts. Das ist die Stack-Überlauf Weg.
hahaha 😀
wie würde ich mit Leerzeichen? Wenn die Zeile so etwas wie " 15
, I just want to get
15`.Leerzeichen werden übersprungen, indem
>>
. Versuchen Sie es und sehen!InformationsquelleAutor Iain