C ++控制台属性的奇怪行为

时间:2020-01-27 00:49:05

标签: c++

我首先向您显示代码:

#include <iostream>
#include <Windows.h>

#define att 0x21

int main()
{
    char str[]= "Hello Wolrd";
    WORD attribute[]= { att, att, att, att, att, att, att, att, att, att, att };

    DWORD CharWrited;
    HANDLE h = GetStdHandle(STD_OUTPUT_HANDLE);

    WriteConsoleOutputCharacterA(h, str, sizeof(str) - 1, { 0,0 }, &CharWrited);
    WriteConsoleOutputAttribute(h, attribute, 11, { 0,0 }, &CharWrited);

    getchar();
    return 0;
}

我有以下output。 到目前为止,一切正常,除非我尝试通过删除或添加列来调整控制台的大小,2nd_output会生成此行,该行结束于控制台行3rd_output的末尾。 我已经通过替换此部分解决了:

char str[]= "Hello Wolrd";

与此:

char str[]= "Hello Wolrd\xff";

但是我想知道为什么会发生?是否有更好的方法来修复它?自包装后,控制台中出现无法识别的字符。 此外,只有在控制台中我激活了“在调整大小时包装文本输出”选项时,它才会发生。

0 个答案:

没有答案