c++ - 连续从bin文件中读取 float 并在控制台窗口中输出

标签 c++ visual-studio-2010 fstream

我正在用 visual c++ 编写代码以读取(并在控制台中查看)bin 文件中的 float ,该二进制文件包含大约 250 万个 float 。

int main(){

   char* holder;

  ifstream fin;

  fin.open("male_16_down.bin",ios::binary|ios::in);

  if(!fin){

   cout<<" Error, Couldnt find the file"<<endl;

  }

  fin.seekg(0,ios::end);

  long int file_size_bin=fin.tellg();

  long int file_size=fin.tellg();

  fin.seekg(0,ios::beg);

  file_size=file_size/sizeof(float);

  holder=new char[file_size_bin];


  fin.read(holder,file_size*sizeof(float));

  float data=(float)atof(holder);

  cout<<data<<endl;



delete[] holder; 

我知道 float 有 4 个字节,char 有 1 个字节,这段代码只输出一个数字 0,我相信 atof() 只将第一个字节转换为数字,但我想要看到整个数字,我怎样才能看到二进制文件中的所有数字, 任何帮助将不胜感激。

最佳答案

#include <fstream>
#include <iostream>

int main() {
    float f;
    std::ifstream fin("male_16_down.bin", std::ios::binary);
    while (fin.read(reinterpret_cast<char*>(&f), sizeof(float)))
        std::cout << f << '\n';
    return 0;
}

关于c++ - 连续从bin文件中读取 float 并在控制台窗口中输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19614581/

相关文章:

asp.net-mvc - 在 Visual Studio 2010 中,如何调用 MVC 应用程序上的 "View In Browser"功能?

c++ - 在输出文件名中使用测试用例名称

c++ - 如果通过模板函数中的 const 引用传递,数组不会衰减为指针

.net - 解决 .NET 运行时中的内部错误

c# - Visual Studio 中的集中实时协作编辑

c++ - 为什么这只是一个空白的输出文件

C++,处理后读取和写入同一文件

c++ - 当具有 std::map<int,std::ofstream> 成员时,类不从 dll 导出

C++ 将 vector 迭代器转换为索引

c++ - 当一个包含 lambda 的类型被分配时会发生什么?