首页 > 解决方案 > 将 C++ 数组写入文件,避免创建 std::string

问题描述

我有一个表示 ASCII 数据的结构:

struct LineData
{
    char _asciiData[256];
    uint8_t _asciiDataLength;
}

使用创建:

std::string s = "some data here";
memcpy(obj._asciiData, s.length());
obj._asciiDataLength = s.length();

如何以最低延迟将 char 数组以 ASCII 格式写入文件?我想避免创建临时std::string.

我试过了:

file.write((char *)obj._asciiData, sizeof(obj._asciiDataLength));
file << std::endl;

但我的文件每行只包含“0”。

标签: c++

解决方案


那是因为sizeof(obj._asciiDataLength)可能1在您的系统上,所以只写了一个字符。您想要实际长度,而不是大小uint8_t

file.write(obj._asciiData, obj._asciiDataLength);

推荐阅读