解析字符串流的最佳方法

时间:2015-05-31 18:03:35

标签: c++

我目前有一个std::stringstream,其中包含来自给定文件的所有数据。该文件包含一些文本和二进制数据。

一开始有一个字符串名称,所以我这样说:

std::string name;
std::getline(stream, name, '\0');

稍后,我需要检索contentLength。我失败的部分:

int32_t contentLength;
stream >> contentLength;

我了解到这不会奏效,因为stream >>运算符会尝试转换而不是投射我的4字节值为length的字节。

我已经看到了一些如何做到这一点的低级别(c)实现。但我希望你们能告诉我一种更可靠的方法。

1 个答案:

答案 0 :(得分:3)

您可以使用read功能读取二进制数据。

stream.read((char*)&contentLength, sizeof(contentLength));

如果您在具有不同endianness的计算机之间共享此文件,则需要小心,在这种情况下,可能需要反转字节。