将数据从字节数组(带零)传递给istringstream(stringstream)

时间:2013-11-13 11:10:58

标签: c++ stringstream istringstream

为什么这段代码

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)。 怎么解决?

1 个答案:

答案 0 :(得分:1)

std::istringstream没有带数组的构造函数。您实际调用的是带字符串和openmode的构造函数。您需要的就是:

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