我與一些本地Windows控制檯功能搞亂,並感到自己的速度印象深刻,如果不是他們的易用性。FillConsoleOutputCharacter/WriteConsoleOutput和特殊字符
無論如何,我很早就知道,下面的代碼會產生一些有趣的人物
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和WriteConsoleOutputA完美地工作。在Windows控制檯中使用unicode會有什麼好處嗎?我的(理所當然有限的)理解是,控制檯中的輸出限制爲256個字符(由代碼頁定義,我也模糊了)。無論如何,非常感謝這份詳細,及時,有益的答覆! – Kvothe
使用Unicode跳過代碼頁,這意味着您可以使用盡可能多的不同字符(無限制256個字符),儘管您仍然僅限於控制檯字體中包含的字符。如果默認字體不包含您想要的字符,您可以選擇其他字體。 –