我目前有一个std::stringstream
,其中包含来自给定文件的所有数据。该文件包含一些文本和二进制数据。
一开始有一个字符串名称,所以我这样说:
std::string name;
std::getline(stream, name, '\0');
稍后,我需要检索contentLength
。我失败的部分:
int32_t contentLength;
stream >> contentLength;
我了解到这不会奏效,因为stream
>>
运算符会尝试转换而不是投射我的4字节值为length
的字节。
我已经看到了一些如何做到这一点的低级别(c
)实现。但我希望你们能告诉我一种更可靠的方法。
答案 0 :(得分:3)
您可以使用read
功能读取二进制数据。
stream.read((char*)&contentLength, sizeof(contentLength));
如果您在具有不同endianness的计算机之间共享此文件,则需要小心,在这种情况下,可能需要反转字节。