【发布时间】:2011-08-25 22:01:56
【问题描述】:
我有以下代码,我正在尝试在二进制文件中写入一些数据。 问题是我对二进制文件没有任何经验,我无法理解我在做什么。
#include <iostream>
#include <fstream>
#include <string>
#define RPF 5
using namespace std;
int write_header(int h_len, ofstream& f)
{
int h;
for(h=0;h<h_len;h++)
{
int num = 0;
f.write((char*)&num,sizeof(char));
}
return 0;
}
int new_file(const char* name)
{
ofstream n_file(name,ofstream::binary);
write_header(RPF,n_file);
n_file.close();
return 0;
}
int main(int argc, char **argv)
{
ofstream file("file.dat",ofstream::binary);
file.seekp(10);
file.write("this is a message",3);
new_file("file1.dat");
cin.get();
return 0;
}
1。如您所见,我正在打开 file.dat 并在“thi”一词中写入。然后我打开文件,我看到它的 ASCII 值。为什么会这样?
- 然后我创建了一个新文件 file1.dat 并尝试在其中写入数字 0 五次。 我应该使用什么?
这个
f.write((char*)&num,sizeof(char));
或者这个
f.write((char*)&num,sizeof(int));
为什么我不能按原样写出数字的值而必须将其转换为char*?
这是因为write() 像这样工作还是我只能将字符写入二进制文件?
谁能帮我理解发生了什么?
【问题讨论】:
-
您应该经常检查文件是否正确打开,例如在使用之前使用'ofstream::is_open'。
-
@soulSurfer2010 谢谢我知道,但这只是演示问题的示例代码。
标签: c++ file file-io binary fstream