我正在开发Windows的控制台程序,我的一个设置是更改控制台和文本颜色的选项。
我正在使用c ++,所以我可以做system("color 07");
之类的事情,它会使背景变黑并且文本变成白色。
我想要做的是呈现所有16种颜色选项,然后让用户选择他的选择。
(以下是我的部分代码):
int a;
int b;
cout << "Please enter your background color." << endl;
cin >> a; //the user inputs 0
cout << "Please enter your text color." << endl;
cin >> b; //the user inputs 7
如何将两个变量传递给system()调用?我用Google搜索,但我能找到的只是字符串系统(),我不想要。
另外,我非常清楚邪恶的system()是如何的,所以如果有人除了system()之外还有其他选项可以做同样的事情,那就没关系了。但请不要告诉我邪恶的系统()是多少。
在此先感谢!!
答案 0 :(得分:3)
system
命令采用单个const char*
参数。因此,您只需要为要执行的命令构建一个字符串。
#include <iostream>
#include <sstream>
#include <string>
int main()
{
int backgroundColor;
std::cout << "Enter background color\n";
std::cin >> backgroundColor;
int foregroundColor;
std::cout << "Enter foreground color\n";
std::cin >> foregroundColor;
std::stringstream stream;
stream << "color " << backgroundColor << foregroundColor;
std::cout << "Command to execute: '" << stream.str() << "'\n";
::system(stream.str().c_str());
return 0;
}
答案 1 :(得分:1)
这可能是使用C ++构造的更简单的解决方案。
#include <iostream>
#include <string>
#include <cstdlib>
using namespace std;
int main()
{
string bgClr,fgClr;
cin >> bgClr >> fgClr;
::system((bgClr+fgClr).c_str());
return EXIT_SUCCESS;
}
答案 2 :(得分:-1)
char command[500] = "";
sprintf(command, "color(%d, %d)", a, b);
int result = system(command);