1

为什么这段代码

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)。如何解决?

4

1 回答 1

1

std::istringstream没有采用数组的构造函数。您实际上是在调用采用 C 风格字符串和openmode. 为此,您只需要:

std::istringstream ss(std::string(magic, magic + sizeof(magic)));
于 2013-11-13T12:47:54.070 回答