c++ - FillConsoleOutputCharacter/WriteConsoleOutput 和特殊字符

标签 c++ windows visual-studio console

我正在使用一些 native Windows 控制台功能,如果不是它们的易用性,它们的速度给我留下了深刻的印象。

反正我早就知道下面的代码会产生一些有趣的字符

for(int i = 0; i < 256; i++)
{
    cout << char(i) << endl;
}

但是,我无法让 FillConsoleOutputCharacter 或 WriteConsoleOutput 生成所有这些字符(许多只是显示为问号)。

这是我使用的代码示例:

COORD spot = {0,0};
HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);
DWORD Written;

for(int i = 0; i < 256; i++)
{
    FillConsoleOutputAttribute(hOut, 7, 1, spot, &Written);
    FillConsoleOutputCharacterW(hOut, char(i), 1, spot, &Written);

    spot.Y++;
}

有谁知道用原生函数写这些字符的相对方便的方法吗?

顺便说一句,我在 Windows 7 x64 上使用 Visual Studio 2010。

最佳答案

尝试使用 FillConsoleOutputCharacterA 而不是 FillConsoleOutputCharacterW,它使用的是 unicode 字符,需要一点知识才能正确获取。

编辑 我尝试使用 FillConsoleOutputCharacterA,它提供与您的第一个案例等效的输出。

关于c++ - FillConsoleOutputCharacter/WriteConsoleOutput 和特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10874401/

相关文章:

c++ - 标准库中的类型可以过度对齐吗?

java - 适用于 Windows 的安装程序

windows - 将多个值写入 Reg_SZ

c# - Roslyn 的哪些部分可以与 VS 2013 一起使用?

c++ - 将 float 的 SIGILL 转换为固定的转换

c++ - 正确命名的临时对象和右值引用/移动

c# - 缺少引用的 Visual Studio,但它显然存在,

c# - Visual Studio 错误 : "The debugger cannot unwind to this frame." on any exceptions

c++ - 为什么这种获取 CPU 利用率的方法产生的结果比任务管理器中的方法低 2 倍?

c++ - 顶点和索引缓冲区如何在 DirectX11 中与顶点、法线和 Texcoords 一起工作