2016-11-15 3 views
0

Ich versuche, formatierte hexadezimale Daten in unsigned ints mit dem Operator >> einzulesen. Der Code Ich verwende istifstream >> dieselbe Zeile erneut lesen

Diese auf einem 300 Zeilendatei funktioniert gut, aber wenn ich es auf einer anderen Datei versuchen, liest es die fünfte Zeile wiederholt dann seg Fehler, und ich kann nicht herausfinden, warum . Die ersten fünf Zeilen sind

FD2C FF EB 
4FE9 FF 32 
276E FF 6E 
5C09 FF A3 
7739 FF 36 

Die Codezeile ist

7739 FF 36 

Jede Hilfe sehr geschätzt wird. Vielen Dank!

Edit:

ich meinen Code geändert, so dass es wie

#include <iostream> 
#include <fstream> 

int main(int argc, char** argv) 
{ 
    ifstream in(argv[1]); 
    unsigned int addr; 
    unsigned int op; 
    unsigned int data; 
    while (in >> hex >> addr >> hex >> op >> hex >> data) 
    { 
    cout << addr << " " << op << " " << data << '\n'; 
    } 
    return 0; 
} 
sieht

Dies das Problem der löst das fünfte Zeile immer und immer wieder zu lesen, aber es Segfaults noch, wenn auch auf einer anderen Leitung. Ich werde weiter schauen und sehen, ob ich es festnageln kann.

Antwort

-2

FF ist ein neues Seitensymbol und dann folgt ein Dollarzeichen $ welches 36 ist, vielleicht denkt es, dass 36 ein Zeiger auf etwas ist. Versuchen Sie, unsigned int zu unsigned char zu ändern.

EDIT: das liest alles ohne Probleme und Ausgabe ist in Hex-Werten viel Glück.

#include <iostream> 
#include <fstream> 

int main(int argc, char** argv) 
{ 
std::ifstream in; in.open("tst.tst",std::ios::in); 
unsigned char addr; 
unsigned char op; 
unsigned char data; 
while (in >>std::hex>> addr>>std::hex>> op>>std::hex>> data) 
{ 
    std::cout << (int)addr <<std::hex << " " << (int)op<<std::hex << " " << (int)data<<std::hex<< "\n"; 
    } 
    return 0; 
} 
Verwandte Themen