2014-02-28 58 views
0

让我首先说我找不到一个完全相同的问题,但我的搜索关键字是相当通用的,所以如果你知道一个线程可以回答我的问题,请指出我和我将关闭此线程。引号中的变量C++

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

我想知道是什么让你认为这个语法是有效的C++?必须是一个奇怪的来源,你正在学习语言...... – PlasmaHH

+0

当你是一个高中辍学教你自己编程时会发生什么?) – 808st8ofmind

+0

所以你正在编写语法,并尝试如果编译器吃它?看起来你应该看看http://stackoverflow.com/questions/388242 – PlasmaHH

回答

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++风格的字符串。

+0

美丽!感谢您的快速回答/解释! – 808st8ofmind

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为字符串但是,您可以将文字添加到std::stringstd::stringstd::string