首页 > 解决方案 > 在输出上划线字符和使用 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 中编译的命令行:

在此处输入图像描述

标签: c++windowscharacter-encodingstreamwindows-console

解决方案


推荐阅读