c ++ - 变量到系统()

时间:2015-03-07 23:36:38

标签: c++ windows

我正在开发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()之外还有其他选项可以做同样的事情,那就没关系了。但请不要告诉我邪恶的系统()是多少。     
    
在此先感谢!!

3 个答案:

答案 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);