gpt4 book ai didi

c++ - 更改控制台颜色并保留 C++ 中的输出

转载 作者:行者123 更新时间:2023-11-28 05:11:14 27 4
gpt4 key购买 nike

我需要制作一个类似于 Window 的 CMD 的 CLI。为了制作颜色命令,我在 rlutil.h 中使用函数 rlutil::setColorrlutil::setBackgroundColor .但是,要更改所有控制台中的颜色,我必须清除屏幕 (rlutil::cls()),否则只有新的输出会出现图像中的这种变化。

没有 cls:

Without the cls

随着 cls: Before the command After the first command - colors af

在cmd中(我用@echo off不显示当前目录): The same codes used in the cmd

这是我做的函数:

void colors(string value) {//I recive the user's input (like in the cmd)
char foo[3];//I save each character in this array
int c_text = 0, c_bg = 0;//Variables to get the numeric value of each character
if(value.length() == 2) {//This is to only accept 2 characters as parameter for the command
strcpy(foo, value.c_str());//Copy the values of the string in the array
c_bg= chartoHEX(foo[0]);//Take the int value of each character
//(if the parameter in chartoHEX is '0', returns 0, if it's 'A', returns 10, and so on)
c_text = chartoHEX(foo[1]);
//If the function returns -1 means that the parameter wasn't an HEX number
if(c_text != -1 && c_bg != -1) {
rlutil::setColor(c_text);//Changes the text color
rlutil::setBackgroundColor(c_bg);//Changes the background color
}
}
}

当我调用函数时:

colors("0a");
rlutil::cls();
cout << "C:\\Users\\Raven>";

如何在更改颜色后保留输出?

最佳答案

如果您使用低级 native Windows 控制台功能,您可以更改颜色而不影响文本。使用 GetStdHandle_get_osfhandle 获取控制台句柄,然后调用 WriteConsoleOutputAttribute .

关于c++ - 更改控制台颜色并保留 C++ 中的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43460785/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com