0

首先让我说我找不到相同的问题,但我的搜索关键字相当通用,所以如果你知道一个回答我问题的线程,请指出来,我会关闭这个线程。

我正在用 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 
4

2 回答 2

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数组,并且不能将 an 添加std::string到字符串文字,但是,您可以将文字添加到 astd::string或 anstd::string到 an std::string

于 2014-02-28T22:10:26.210 回答
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++ 风格的字符串。

于 2014-02-28T22:10:58.953 回答