让我首先说我找不到相同的问题,但我的搜索关键字相当通用,所以如果你知道一个回复我的问题的线程,请指出我,我会关闭这个帖子。
我正在用c ++重写我的bash脚本,以帮助我更深入地掌握语言。我遇到的问题如下:
string input = "/wam/wxx.cpp";
string output = "/wam/wxx.exe";
system ("/MinGW/bin/g++.exe input -o output");
(这只是一个小例子;在我的实际代码中,变量是用户输入的)
显然,我将“输入”和“输出”这两个词传递给我的编译器而不是那些名称的变量。我试过了
system ("/MinGW/bin/g++.exe" input "-o" output);
以及引用/不引用的其他组合,其中任何一个都不起作用。系统命令需要引号,那么有没有办法在这些引号中正确识别我的变量? (目前我将这些变量保存到文本文件中,然后将它们加载到运行编译器的bash脚本中,这使我无法在c ++中编写此内容。)
提前致谢!
编辑:澄清一下,我
using namespace std
答案 0 :(得分:0)
这应该有所帮助:
string input = "/wam/wxx.cpp";
string output = "/wam/wxx.exe";
string command = "/MingW/bin/g++.exe "
command += input;
command += " -o "
command += output;
system(command.c_str());
您需要std::string::c_str()
将字符串转换为char
数组,并且无法将std::string
添加到字符串文字中,但是,您可以将文字添加到{{1 {},或std::string
到std::string
。
答案 1 :(得分:0)
由于它们(大概)std::string
,您可以将它们与+
粘贴在一起,如下所示:
std::string cmd = "/MinGW/bin/g++.exe";
std::string fullcmd = cmd + " " + input + " -o " + output;
system(fullcmd.c_str());
您需要fullcmd.c_str()
,因为system
采用C样式字符串,而不是C ++样式字符串。