从输入文件中读取十六进制列

时间:2016-11-10 14:56:04

标签: c++ hex

这是文件的一个示例:它有两列,第二列是十六进制值

0 298478 0 298478 2 3636 0 70f60874 ...

我试图把第一列放在一个向量中,第二列放在另一个向量中,我尝试了多个东西,但它在输入文件的第四行到达'f'后停止或者在访问时给出了奇怪的值向量。

using namespace std;

int main()
{
vector <int> label;
vector <int> address;

ifstream ifile("data.txt");

if (!ifile.is_open())
{
    cout << "Error opening file\n";
}

while (!ifile.eof())
{

    int a;
    long long b;
    ifile >> a >> hex >> b;
    if (ifile.fail())
    {
        break;
    }
    label.push_back(a);
    address.push_back(b);

}

cout << label[3] << "\n";
cout << address[3];

}

当我运行这个时,我得到: 0 1895172212

如果我在没有“hex&gt;&gt; b”的情况下运行它,我会得到准确的结果,但它不会超过第4行的'f'。请不要对此感到高兴,我感谢任何帮助

1 个答案:

答案 0 :(得分:1)

1895172212实际上是正确的值(将70f60874转换为十进制时),换句话说 - 您将值打印为十进制,如果要将其打印为十六进制值,则还需要使用十六进制作为输出。 / p>