将C 数组写成文件,避免创建std :: String

Write C++ array to file, avoiding creating a std::string

本文关键字:创建 std String 数组 文件      更新时间:2023-10-16

我有一个表示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'。

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

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