如何在c ++中使用fstream从文件中读取十六进制值?

ard*_*u07 9 c++ fstream

正如标题所说,你如何使用fstream?读取十六进制值?

我有这个代码:(假设我们在文件中有"FF".)

fstream infile;
infile.open(filename, fstream::in|fstream::out|fstream::app);

int a;
infile >> std::hex;
infile >> a;
cout << hex << a;
Run Code Online (Sandbox Code Playgroud)

但这并没有给我任何输出而不是ff.我知道有一个,fscanf(fp, "%x", val)但我很好奇有没有办法使用流库来做到这一点.

更新:

我的代码一直都是正确的,事实证明我的错误是我无法阅读"FFF"并将其放在变量a,b,c中

while (infile >> hex >> a >> b >> c)
  {
    cout << hex << a << b << c << "\n";
  }
Run Code Online (Sandbox Code Playgroud)

有人可以帮我这个吗?我是否必须将我想要阅读的每个HEX值与空格分开?因为infile >> hex >> setw(1)不起作用..

Ber*_*ann 10

您可以使用十六进制修饰符

int n;
cin >> hex >> n;
Run Code Online (Sandbox Code Playgroud)


Nek*_*esh 6

您必须std::hex在阅读时进行链接,就像将其链接以进行编写一样:

infile >> std::hex >> a;
Run Code Online (Sandbox Code Playgroud)


Oli*_*rth 6

这有效:

int main()
{
    const char *filename = "blah.txt";
    ifstream infile(filename, fstream::in);

    unsigned int a;
    infile >> hex >> a;
    cout << hex << a;
}
Run Code Online (Sandbox Code Playgroud)

  • @gcc:不必要; 析构函数将隐式执行此操作. (5认同)