为什么这段代码
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)。 怎么解决?
答案 0 :(得分:1)
std::istringstream
没有带数组的构造函数。您实际调用的是带字符串和openmode
的构造函数。您需要的就是:
std::istringstream ss(std::string(magic, magic + sizeof(magic)));