gpt4 book ai didi

c++ - 从 fstream 读取十六进制值到 int

转载 作者:行者123 更新时间:2023-11-30 00:58:49 29 4
gpt4 key购买 nike

我有一个文本文件,每一行都有一个十六进制值。有点像

80000000
08000000
0a000000

现在我正在编写一个 C++ 代码来直接读取它。有点像

fstream f(filename, ios::in);

while(!f.eof)
{
int x;
char ch;
f>>std::hex>>x>>ch; // The intention of having ch is to read the '\n'
}

现在这没有按预期工作。虽然某些数字已正确填充,但 ch 逻辑存在缺陷。谁能告诉我正确的做法。我基本上需要用等效的 int 填充一个数组。

最佳答案

这个有效:

#include <iostream>
#include <fstream>

int main()
{
std::ifstream f("AAPlop");

unsigned int a;
while(f >> std::hex >> a) /// Notice how the loop is done.
{
std::cout << "I("<<a<<")\n";
}
}

注意:我必须将 a 的类型更改为 unsigned int,因为它溢出 int 并因此导致循环失败.

80000000:

作为十六进制值,这设置了 32 位值的最高位。在我的系统上哪个溢出了一个 int(在我的系统上是 sizeof(int) == 4)。这会将流设置为错误状态,并且无法进一步阅读。在 OP 循环中,这将导致无限循环,因为永远不会设置 EOF;在上面的循环中,它永远不会进入主体,代码将退出。

关于c++ - 从 fstream 读取十六进制值到 int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5555849/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com