c++ - 控制台属性的 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;
}
我有以下输出。到目前为止,一切正常,除非我尝试通过删除或添加列来调整控制台的大小,否则会生成2nd_output这条线,它在控制台线3rd_output的末尾结束。我已经通过更换这部分解决了:
char str[]= "Hello Wolrd";
有了这个:
char str[]= "Hello Wolrd\xff";
但我想知道,为什么会这样?有没有更好的方法来解决它?打包后,控制台中会出现一个无法识别的字符。此外,只有在控制台中我激活了“在调整大小时包装文本输出”选项时才会发生这种情况。
解决方案
推荐阅读
- r - 如何自动计算列表中不同字符串的出现次数
- java - Eclipse 错误:资源“/项目名称”不存在
- spring - 如何使用 Spring Data MongoDB 在查询中定位数组的最后一项?
- authorization - 授权在招摇球衣中不起作用,授权复选框未显示
- vue.js - 输入元素中的vuejs svg元素对点击事件没有反应
- javascript - Vanilla JS 如何将 json 解析为 html
- python - 只有朋友的帖子不显示
- localization - 使用每种语言的唯一资源文件使用 IStringLocalizer 本地化 blazor
- flutter - 如何创建 DropdownButtonFormField 的圆角(Flutter)
- windows - Lolcode:变量不存在:STDIO