我想使用wfstram
类在二进制文件中编写结构数据。
为什么输出文件为空?
以下是我的代码。
#include "stdafx.h"
#include <string>
#include <fstream>
using namespace std;
struct bin_data
{
wstring ch;
size_t id;
};
int main()
{
wfstream f(L"test_bin_file.txt", ios::out | ios::binary);
bin_data *d = new bin_data;
d->id = 100;
d->ch = L"data100";
f.write((wchar_t*)&d, sizeof(struct bin_data));
f.close();
return 0;
}
答案 0 :(得分:2)
在处理二进制数据时,我不喜欢使用大流 - 二进制最终是字节,所以你不必担心char vs wchar。下面的代码在x64上写入30个字节,8个用于id,8个用于长度,14个(7 * 2)用于字符串本身
int main() {
ofstream f(L"QQQ.txt", ios::out | ios::binary);
bin_data *d = new bin_data;
d->id = 100;
d->ch = L"data100";
// ID first
f.write((char*)&d->id, sizeof(d->id));
// then string length
auto l = d->ch.length();
f.write((char*)&l, sizeof(l));
// string data
f.write((char*)d->ch.data(), l*sizeof(wchar_t));
f.close();
return 0;
}