Wie verschiebe ich den Dateizeiger um eine ganze Zahl zurück?

8

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?

    
user1955184 10.10.2013, 15:33
quelle

5 Antworten

3

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.

    
Grzegorz 10.10.2013 15:38
quelle
2

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.

    
Antonio 10.10.2013 15:49
quelle
0

Das erste Argument ist der Dateiname, das zweite Argument ist der Zahlenindex, das Programm zeigt die Zahl am Index an und zeigt dann die vorherige Zahl (von Null ausgehend) an

%Vor%     
James 10.10.2013 15:56
quelle
0

Versuchen Sie Folgendes:

%Vor%     
0x499602D2 10.10.2013 15:54
quelle
0

Sie können sich istroom :: unget ()

ansehen     
Duncan Smith 10.10.2013 15:41
quelle

Tags und Links