gpt4 book ai didi

c++ - 如何一次从文件中读取两个十六进制值

转载 作者:行者123 更新时间:2023-11-28 00:20:06 27 4
gpt4 key购买 nike

我试图从一个文件中读取两个数据,但我遇到了两个问题:

  1. 无限循环
  2. 第一个值被正确读取,第二个值不正确。

我尝试使用 getline,但无法正常工作。我已将我的代码包含在 c++ 中、输入文件和下面的正确输出。

正确的输出应该是这样的:

Num1 = 4FD37854
Num2 = E281C40C

我正试图从名为 input.txt 的文件中读取两个数据:

4FD37854
E281C40C

这是我的程序:

#include <iostream>
#include <fstream>

using namespace std;

union newfloat{
float f;
unsigned int i;
};

int main ()
{

// Declare new floating point numbers
newfloat x1;
newfloat x2;

// Create File Pointer and open file (destructor closes it automatically)
ifstream myfile ("input.txt");

while (myfile >> hex >> x1.i) // Read until at EOF
{

myfile >> hex >> x2.i; // Read input into x2

cout << "Num1 = " << hex << x1.i << endl;
cout << "Num2 = " << hex << x2.i << endl;

} // end of file reading loop
return 0;
}

最佳答案

while (!myfile.eof()) 几乎总是错误的,并且会比您预期的多读一次。

你应该说

while(myfile >> hex >> x1.i >> x2.i)

但主要问题是E281C40C不能读入int,你需要一个unsigned int

这也是无限循环的原因 - 因为读取失败 before 到达文件末尾,!myfile.eof() 保持为真,并且读取一直失败。
这是避免 eof() 的另一个原因。

关于c++ - 如何一次从文件中读取两个十六进制值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27929550/

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