例如,我有这样的代码。在C++中将字符串连接到char数组中(通过使用较少的strcat)
基本上,我想称之为” ./analyzeText跳回到bar.txt foo.txt的8" 在Linux上我的节目。 analyzeText是已编制的程序,位于同一文件夹中。
我想知道有比使用“strcat”在C++中创建字符串更短的方法吗?
例如,我有这样的代码。在C++中将字符串连接到char数组中(通过使用较少的strcat)
基本上,我想称之为” ./analyzeText跳回到bar.txt foo.txt的8" 在Linux上我的节目。 analyzeText是已编制的程序,位于同一文件夹中。
我想知道有比使用“strcat”在C++中创建字符串更短的方法吗?
使用一些字符串:
std::string NameTmp = "foo.txt";
std::string Name = "bar.txt";
std::string cmd = "./analyzeText " + Name + " " + NameTemp + " 8";
system(cmd.c_str());
这是稍微低效率(创建多个字符串),但它的很多简单。
如果它正常工作,效率更高,而且您不必提出有关它的问题。:-) – 2011-03-08 20:42:31
std::string cmd("./analyzeText ");
cmd += Name;
// etc.
system(cmd.c_str());
+=
到右参数可以是C字符串(const char *
/文字),一个或std::string
单个字符。
(请永远不要使用strcat
在C++中,这是不必要的和不安全的)
是,使用C++构建:
std::string nameTmp = "foo.txt";
std::string name = "bar.txt";
int param = 8;
...
std::stringstream ss;
ss << "./analyzeText " << name << " " << nameTmp << " " << param;
system(ss.str().c_str());
我假设的名称和参数是在运行时变量。很明显,如果他们不是,那么你可以酌情替代。
如果你只是想调用另一个程序,这看起来像一个shell脚本的工作。有什么理由不能使用脚本,或者想使用C? – dappawit 2011-03-08 20:37:34
@dappawit:你在那里做了一些非常全面的假设。 OP想要从应用程序内执行系统命令的原因可能有多种。 – 2011-03-08 20:42:43
是的,你是对的。当我第一次看到它时,我读它就好像他*只想*调用另一个程序。我不认为它可能在一个更大的程序本身。我的错。 – dappawit 2011-03-08 20:44:57