我有一个表示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'。
答案 0 :(得分:5)
这是因为sizeof(obj._asciiDataLength)
在您的系统上可能是1
,因此只能写入一个字符。您需要的是实际长度,而不是uint8_t
的大小:
file.write(obj._asciiData, obj._asciiDataLength);