如何强制流根据类型写入数字数据

How to force stream to write numeric data according to type

本文关键字:数字 数据 类型 何强制      更新时间:2023-10-16

我使用wofstream合并文件,还编写wstring和整数(直接从内存中)。我(目前)的问题是,假设我有一个int32,它包含数字7。在内存中,它需要4个字节,但当我将它写入流,并使用十六进制查看器进行检查时,我只看到了这个——7(单字节)。

当然,这对我来说没有用,因为我必须阅读它,并可靠地阅读它。

那么,如何使流根据类型写入数据——所以2字节类型将占用2字节,4字节——4字节,依此类推?

记录我的合并功能:

for (const std::wstring &fn : files)  
{
    std::wifstream is_src(dst_dir+fn, std::ios_base::binary);
    os_dest << is_src.rdbuf();
    os_dest << fn;
    os_dest << static_cast<__int32>(fn.size());
}
os_dest << static_cast<__int32>(files.size());

我添加了强制转换,以100%确定有4个字节,而没有其他字节。

在这里找到答案:将整数写入二进制文件(C++)

关键不是使用流运算符,而是使用方法write