Angenommen, ich habe eine Datei mit Ganzzahlen im Formular
%Vor%Sagen Sie, dass ich einen Eingabedateistrom fin habe und ich versuche, die ganzen Zahlen aus der Datei zu lesen.
%Vor% Jetzt mache ich diese Aktion in einer while-Schleife, wo ich zu einem bestimmten Zeitpunkt meinen Dateizeiger genau um eine ganze Zahl zurück bewegen möchte. Das heißt, wenn mein Dateizeiger die Ganzzahl 27
lesen soll, wenn ich fin>>val
mache, möchte ich den Dateizeiger so verschieben, dass er die Ganzzahl 100
lesen kann, wenn ich fin>>val
mache. Ich weiß, dass wir fin.seekg()
verwenden können, aber ich habe es nur verwendet, um die Dateizeiger nach Zeichen zu verschieben, nicht nach Ganzzahlen.
Wahrscheinlich ist das eine naive Frage. Aber kann mir bitte jemand helfen?
In Ihrem Fall ist es keine Ganzzahl, sondern ein Text, der eine Zahl darstellt. Aus diesem Grund müssen Sie Zeichen für Zeichen zurückgehen, bis Sie eine Ziffer ( !isdigit(c)
) gefunden haben.
Wie einer der folgenden Kommentatoren darauf hingewiesen hat, können Sie auch auf das Minuszeichen achten, falls Ihre Zahlen negativ sein können.
Sie können tellg
nach jedem Lesevorgang verwenden, um den Zeiger zu speichern, der später verwendet werden soll mit einem seekg
.
Sie könnten auch die Implementierung von <<
übernehmen und sie mit einer Funktion modifizieren, die auch die Anzahl der Zeichen zurückgibt, die Sie jedes Mal erweitert haben. Wo der Quellcode von operator<<
zu finden ist, kann ich Ihnen nicht leicht helfen.