鉴于以下内容:
const char opn[8] = { 0x16, 'O', 'P', 'N', 0x17, 0xa8, 0xa9, '\0' };
std::cout << opn;
sleep(5);
该字符串仅在五秒后写入cout
。预期的行为是将消息打印到cout
,然后等待几秒钟。
为什么会这样?
答案 0 :(得分:4)
std::cout
被缓冲,因此不会立即打印消息,而是仅在刷新std::cout
的缓冲区时,即程序终止时。
使用
std::cout << opn << std::flush;
正如@RemyLebeau在对此答案的评论中所述,<< std::endl
等同于<< '\n' << std::flush;
并且还刷新了缓冲区。
此外,您缺少尾随的空字节,因此截至目前,您的程序仍未定义。