将C ++数组写入文件,避免创建std :: string

时间:2019-06-27 13:07:57

标签: c++

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

1 个答案:

答案 0 :(得分:5)

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

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