2016-11-15 2 views
0

>>私はフォーマットされた16進数のデータを>>演算子を使って符号なしintに読み込もうとしています。私が使用しているコードはifstream >>同じ行をもう一度読む

これだけで罰金300行のファイルで動作しますが、私は別のファイルでそれをしようとすると、それは繰り返し、その後ワンセグ障害を5番目の行を読み込み、私は理由を把握することはできませんです。最初の5行は

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

ある問題のある行は、すべてのヘルプは高く評価され

7739 FF 36 

です。ありがとう!

編集:それは

#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; 
} 

のように見えるよう

私は自分のコードを変更し、別の行にあるものの、これは何度も何度も5番目の行を読んでの問題を解決し、それはまだセグメンテーションフォールト。私はさらに見て、私はそれを固定することができますかどうか見ていきます。

答えて

-2

FFは新しいページ記号で、ドル記号$が36で、36が何かへのポインタだと思うかもしれません。 unsigned intをunsigned charに変更しようとします。

EDIT:これは問題なくすべてを読み取り、出力は16進値で幸運です。

#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; 
} 
関連する問題