【发布时间】:2019-05-28 20:23:51
【问题描述】:
#include <iostream>
#include <vector>
#include <fstream>
using namespace std;
int main(){
// write file
string file_name = "random_fstream.dat";
ofstream file(file_name, ios_base::out | ios_base::binary);
if (!file) {return EXIT_FAILURE;}
int r = 2;
int c = 3;
file.write(reinterpret_cast<char*>(&r),sizeof(r));
file.write(reinterpret_cast<char*>(&c),sizeof(c));
//------------------------------------------------
// read file
ifstream in(file_name, ios_base::in | ios_base::binary);
if (!in) {return EXIT_FAILURE;}
int x = 0;
int y = 0;
in.read(reinterpret_cast<char*>(&x),sizeof(x));
in.read(reinterpret_cast<char*>(&y),sizeof(y));
cout << x << y << endl;
return 0;
}
我正在尝试用 C++ 练习读写文件。第一步是以二进制形式将 int 值 2 和 3 写入文件。第二步是从该文件中读取两个数字。
然后我得到 x 和 y 的值都等于 0,但我希望收到 x=2 和 y=3。我哪里做错了?
【问题讨论】:
-
您是否故意尝试在写入操作后尚未关闭的同一文件中读取?或者这是一个疏忽?
-
另外,您正在读入
x两次,而不是读入x和y。 -
是的,这是一个错字。让我现在编辑它。
标签: c++ file c++11 fstream reinterpret-cast