Sie können ein Gebietsschema verwenden, um zu ändern, welche Dinge aus der Datei gelesen werden, während sie gelesen wird. Das heißt, Sie filtern alle nicht numerischen Werte heraus:
%Vor%Wenn Sie Ihre Datei lesen, konvertiert sie alle Nicht-Ziffern in Leerzeichen, während Sie nur die Zahlen erhalten. Danach können Sie einfach Ihre normalen Konvertierungen verwenden, um das, was gelesen wird, in Ints umzuwandeln.
%Vor%Antwort auf die folgenden Kommentare:
Hier ist, was ich getan habe, damit es funktioniert
%Vor%Und das bringt nur die Ints in den Vektor, nicht mehr und nicht weniger. Der Grund, warum es vorher nicht funktionierte, war zweifach:
Ich würde empfehlen, mindestens kursorische Plausibilitätsprüfungen durchzuführen, wenn Sie dies lesen:
%Vor%Tut mir leid Konrad, aber ich empfehle: nie bei Schmerz Tod , niemals nie nie (ist das? Klar genug? :-) lesen formatierte Daten aus einer Datei. Tu es einfach nicht.
Es gibt nur einen richtigen Weg, um formatierte Daten einzugeben: Sie können Teile von Zeichen lesen (normalerweise Zeilen, aber Sie können auch Blöcke fester Länge lesen).
Parsen Sie den Eingabetext. Sie werden keine oberflächliche Überprüfung durchführen, sondern einen Parser verwenden, der alle Formatierungsfehler abfangen und diesen Fehler nachvollziehbar melden kann, geeignete Maßnahmen ergreifen (Abbruch, Zeile überspringen und fortfahren, was auch immer) / p>
Trennen Sie die Eingabe (die E / A-Operation) von der Analyse.
Dieser Rat aus jahrzehntelanger Erfahrung als kommerzieller Programmierer: Das Lesen formatierter Eingaben ist für Proof-of-Principal-Programme von Micky Mouse. Selbst wenn Sie die Erstellung der Datei exklusiv kontrollieren, sollten Sie immer Fehler analysieren und prüfen und melden. Schließlich ändert sich einiges, es funktioniert heute, aber nicht morgen.
Ich schreibe seit Jahrzehnten C ++ und ich habe nie eine ganze Zahl gelesen.