为什么通过系统("color YX")更改控制台应用程序中C++颜色不是最佳解决方案?
Why changing colors in C++ console application by system("color YX") is not the best solution?
我在某处读到,(知道这两种方法都只适用于windows)使用系统不是最好的解决方案。
为什么选择
#include<windows.h>
...
HANDLE hOut;
hOut = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(hOut,BACKGROUND_RED);
更好吗?
据我所知,那个系统("彩色YX")改变了整个控制台的颜色。然而,我认为有一种方法可以做到这一点,那就是在打印文本时"打开和关闭"一些颜色。
系统(命令)在与系统/控制台通信时是否真的会使用额外的层,使用第二种方法可以避免什么?
我为什么要使用第二种方法还有其他原因吗?
我为什么要使用第二种方法还有其他原因吗?
system(command)
将在任何系统上编译,无论"命令"是什么。使用windows函数可以确保您的代码只在实际工作的系统上编译。接下来,如果你想移植这个代码,你会得到一个明显的编译器错误,所以你会花更少的时间来追踪代码不工作的原因。
在优化方面,系统(命令)调用创建一个单独的进程,传递参数"color XY",然后该进程搜索命令"color"并执行它。
请注意,由于color是一个控制台内部命令,它的执行几乎是即时的。然而,对于非内部的命令,它将创建另一个进程,并在该单独的进程中执行该命令。
这意味着创建两个非常慢的进程(每个进程有2Mb的堆栈,完整的进程信息,如IP地址、寄存器、stdin/stdout/stderr…)
相关文章:
- 将"打开的CV图像"中的"颜色"转换为整数格式
- 如何在内核C++中使用1920x1080x16M图形或类似的16M颜色?(VGA)
- 如何在24位SDL_Surface上设置像素的颜色
- 如何从SDL_Surface获取特定像素的颜色
- 列表视图更改选择颜色
- GtkTreeView 交替行颜色
- dx11 渲染到纹理仅显示透明颜色
- 使用 OpenGL 4.5 更改所选顶点的颜色
- 为什么我的 LEGACY OPENGL 颜色反转了?
- 双击更改 mfc 中列表控件中的行的颜色
- 更改 QT 中按钮的颜色
- 当我使用CHAR_INFO结构时,控制台会无缘无故地改变颜色
- 列表视图项的替代颜色
- GLSL 将 uint 转换为浮点颜色
- std::带有颜色和标题的 clog 包装器无法正确打印整数
- Vec3b:r/g/b 颜色的最大值为 254,而不是 255
- 如何将矢量对象更改为不同的颜色?
- PPM 颜色显示错误
- 如何更改 QGraphicsItem 对象的颜色?
- 如何防止每次 Arduino 启动时颜色数组都是相同的随机数组