我首先向您显示代码:
#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";
但是我想知道为什么会发生?是否有更好的方法来修复它?自包装后,控制台中出现无法识别的字符。 此外,只有在控制台中我激活了“在调整大小时包装文本输出”选项时,它才会发生。