c++ - 在输出上划线字符和使用 endl 之后,cout 不再打印字符
问题描述
我不明白为什么执行以下代码时不打印“a”:
#include <iostream>
#include <windows.h>
int main()
{
SetConsoleOutputCP(CP_UTF8);
setvbuf(stdout, nullptr, _IOFBF, 100);
std::cout << "‾";
std::cout << std::endl;
std::cout << "a";
return 0;
}
注意:我将 Windows 控制台中的字体更改为“Consolas”,以便正确显示上划线字符。我的 Windows 版本是 Windows 7 Enterprise (Service Pack 1)。
我认为行为应该与以下代码相同,它正确打印了“a”:
#include <iostream>
#include <windows.h>
int main()
{
SetConsoleOutputCP(CP_UTF8);
setvbuf(stdout, nullptr, _IOFBF, 100);
std::cout << "‾\n";
fflush(stdout);
std::cout << "a";
return 0;
}
我得到的输出分别是:
我的第一个示例如何在 Code::Blocks 16.01 中编译的命令行:
解决方案
推荐阅读
- java - Java 服务器套接字未连接
- tensorflow - CNN 中 5 倍交叉验证的准确率差异很大的可能原因是什么?
- mysql - 将 InnoDB 表复制到 FEDERATED 表中
- excel - 如何让宏与更改工作表/工作簿名称一起工作
- hibernate - 如何使用急切获取避免 N+1 问题
- xslt - 如何使用 XSLT 3.0 map:remove?
- html - 如何在我的网站中删除我的 svg 下方的这个小空间?
- c# - 如何在 .Net Core 中将 EnableWindowsFormsHighDpiAutoResizing 设置为 false?
- user-interface - 在 Dash 的其他组件中使用来自上传的数据的问题
- javascript - 过渡和 Javascript