gpt4 book ai didi

c++ - 使用 wfstream 写入二进制文件

转载 作者:搜寻专家 更新时间:2023-10-31 02:15:28 25 4
gpt4 key购买 nike

我想使用 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;
}

最佳答案

在处理二进制数据时,我不太喜欢使用宽流 - 二进制最终是字节,因此您不必担心 char 与 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;
}

关于c++ - 使用 wfstream 写入二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38440613/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com