Ich schreibe etwas Code, um einige Parameterwerte aus einer Datei zu lesen.Korrekte Verwendung von Operator >> Folgezeiten bei gleichem Eingangsstrom
Ich weiß, dass, wenn, sagen wir, ich habe ein stringstream
Objekt stream
aus der Zeichenfolge erstellt "10"
ich eine numerische Variable als int var1;
nur durch die Eingabe definiert initialisieren können:
stream >> var1;
Was, wenn nun mein stringstream
Objekt erstellt aus dem String "10;3;4.5;3.2;"
und ich habe vier Variablen wie folgt deklariert:
int var1;
int var2;
double var3;
double var4;
Kann ich so etwas schreiben:
stream >> var1;
stream >> var2;
stream >> var3;
stream >> var4;
um alle vier Variablen aus diesem Stream zu initialisieren? Oder meine einzige Option besteht darin, einen einfachen Parser zu implementieren, um jeden Wert einzeln zu extrahieren und diesen Wert dann in jedem einzelnen zu speichern?
Nun, in der Tat habe ich es versucht und es funktioniert nicht. var1
wird korrekt initialisiert, aber die anderen Variablen sind alle auf 0 initialisiert.
Können Sie erklären, warum das nicht funktioniert? Vielen Dank im Voraus für Ihre Hilfe.
Sorry, ich weiß nicht, die Ströme gut genug, um eine Erklärung zu geben, aber vielleicht die Antwort auf diese Frage (erklären; als Leerzeichen) hilft als Alternative zum Schreiben Ihres eigenen Parsers: http://stackoverflow.com/questions/21764826/skipping-expected-characters-like-scanf-with-cin – mars
Erklärt nicht, warum das scheitert, aber zeigt Ihnen, wie Sie können TU es. Ersetzen Sie einfach ',' mit ';', da Sie semi-serated Daten und keine durch Komma getrennten Daten haben. http://stackoverflow.com/questions/1120140/how-can-i-read-and-parse-csv-files-in-c – NathanOliver