【发布时间】:2016-04-05 19:12:30
【问题描述】:
我正在使用 Windows。我设法将问题简化为这个。
#include<iostream>
#include<conio.h>
#include<windows.h>
using namespace std;
int main()
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),23);
for (int i=0;i<400;++i)
{
cout<<i<<'\n';
}
cout.flush();
getch();
return 0;
}
它应该只为文本和整行着色,但在第 300 行之后,整行被着色,而不仅仅是文本。使用 '\n' 和 endl 之间似乎没有任何区别。此外,文本是什么或者我是否多次更改颜色都无关紧要,只是行数。我也尝试过使用 printf,但它也没有什么不同。
这是截图:
任何想法为什么会这样做以及我该如何解决?
【问题讨论】:
-
仅供参考,不要使用“幻数”,它会使代码更难理解。传递给
SetConsoleTextAttribute()的值23对应于传递以下标志:FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_RED | BACKGROUND_BLUE,这些标志在wincon.h中定义。 -
@RemyLebeau 是的,那只是为了测试,通常我不会那样做。顺便说一句,我刚刚注意到颜色的代码是这样设置的,这样你就可以像用光一样混合它们并得到正确的结果。
标签: c++ windows colors printf cout