c++fstream read()函数不起作用

c++ fstream read() function not working

本文关键字:函数 不起作用 read c++fstream      更新时间:2023-10-16

为什么下面的代码无法从文件中读取单个整数?它显示"fail()reading",后跟"0"。

在linux上的ubuntu gcc编译器。

#include <iostream>
#include <fstream>
using namespace std;
int main()
{
    ofstream fout2("int_data",ios::binary|ios::out);
    int a = 2;
    fout2.write((char*)&a,sizeof(a));
    int b=0;
    ifstream fin2("int_data",ios::binary|ios::in);
    fin2.read((char*)&b,sizeof(b));
    if(fin2.fail())
        cout << "fail() reading" << endl;
    cout << b << endl;
}

这可能由于以下几个原因而失败:

  1. 您的操作系统可能会保护您不打开当前打开进行写入的文件
  2. 您可能没有将数据刷新到文件中

在构造fin2:之前,可以使用close来解决这两个问题

ofstream fout2("int_data", ios::binary);
const int a = 2;
fout2.write(reinterpret_cast<const char*>(&a), sizeof(a));
fout2.close();
int b = 0;
ifstream fin2("int_data", ios::binary);
if(!fin2.read(reinterpret_cast<char*>(&b), sizeof(b))) {
    cout << "fail() reading" << endl;
}
cout << b << endl;;

实时示例