我有一些结构体如下:
struct dHeader
{
uint8_t blockID;
uint32_t blockLen;
uint32_t bodyNum;
};
struct dBody
{
char namestr[10];
uint8_t blk_version;
uint32_t reserved1;
}
and I have a stringstream as:
std::stringstream Buffer(std::iostream::in | std::iostream::out);
我想将一个 dHdr 和多个 dBody 结构体写入缓冲区中。
Buffer << Hdr1;
Buffer << Body1;
Buffer << Body1;
我遇到了以下错误:
错误:在“Buffer << Hdr1”中没有匹配的运算符“<<”
如果我尝试如下操作:
Buffer.write(reinterpret_cast<char*>(&Hdr1), sizeof(dbHdr1));
Buffer.write(reinterpret_cast<char*>(&Body1), sizeof(Body1));
Buffer.write(reinterpret_cast<char*>(&Body2), sizeof(Body2));
我对打包和内存对齐感到困惑。
- 将结构体写入stringstream的最佳方法是什么?
- 如何将stringstream读取为常规字符串?