将数据从字节数组(带零)传递到字符串流(字符串流)

passing data from byte array(with zeros) to istringstream(stringstream)

本文关键字:字符串 数据 字节 数组 带零 字节数      更新时间:2023-10-16

为什么这段代码

char magicData [] = { 0x00i8, 0xfdi8, 0xffi8, 0xfci8, 0x00i8,
                      0xf3i8, 0xf4i8, 0xf5i8, 0x00i8};
std::string s;
std::istringstream ss(magicData, sizeof(magicData));
while(std::getline(ss, s))
{
std::cout << s << std::endl;
}

不产生任何输出?(使用 Stringstream 而不是 istringstream 没有帮助)。结果,我希望 2 行字符串(末尾没有0x00)。如何解决?

std::istringstream没有

接受数组的构造函数。您实际上是在调用采用 C 样式字符串和 openmode 的构造函数。要使其正常工作,您所需要的只是:

std::istringstream ss(std::string(magic, magic + sizeof(magic)));