还有很多其他值会触发奇怪的事情(取决于您使用的终端) 。你应该先检查每个字符isprint
输出它。更好的是一个函数,如:应该暂时禁用蜂鸣声
net stop beep
:禁用蜂鸣器(在Windows命令行)
void memdump(std::ostream& o, const void* data, size_t len)
{
const unsigned char* ptr = static_cast<const unsigned char*>(data);
for(size_t i = 0; i < len; i += 16)
{
o << std::setw(8);
o << std::setfill('0');
o << std::hex << i << ' ';
size_t to = std::min(len,i+16);
for(size_t j = i; j < to; ++j)
{
o << ' ';
o << std::setw(2);
o << std::setfill('0');
o << std::hex;
o << (unsigned)ptr[j];
if((j+1) % 8 == 0)
{
o << ' ';
}
}
o << " ";
for(size_t j = to; j < i+16; ++j)
{
o << " ";
if((j+1) % 8 == 0)
{
o << ' ';
}
}
for(size_t j = i; j < to; ++j)
{
if(isprint(ptr[j]))
{
o << ptr[j];
}
else
{
o << '.';
}
if((j+1) % 8 == 0)
{
o << ' ';
}
}
o << '\n';
}
o << std::dec;
}
感谢您的回答,关闭了蜂鸣器的工作,但是您是否知道角色7代表的是什么以及为什么会发出蜂鸣声? – Arthur
字符7代表嘟嘟声。我不是在开玩笑。 –
在ASCII编码方案中,0x07代表BEL控制字符。接收此字符时,终端和输出设备通常会发出声音(嘟嘟声)。 –