如何使用c ++程序中的参数执行命令行程序?这是我在网上找到的:
http://www.cplusplus.com/forum/general/15794/
std::stringstream stream;
stream <<"program.exe "<<cusip;
system(stream.str().c_str());
但它似乎不接受实际的程序位置,所以我不知道如何应用它。我希望有这样的事情:
std::stringstream stream;
stream <<"C:\Tests\SO Question\bin\Release\HelloWorld.exe "<<"myargument";
system(stream.str().c_str());
这会给出与反斜杠相关的几个警告 - 程序不起作用。是否希望您将程序放在某个特定位置?
这是我在控制台中获得的输出:
'C:\ Tests'无法识别为内部或外部命令, 可操作程序或批处理文件。
附录:
所以根据Jon的回答,对我来说正确的版本是这样的:
#include <iostream>
#include <cstdlib>
#include <sstream>
#include <cstring>
int main(int argc, char *argv[])
{
std::stringstream stream;
stream << "\"C:\\Tests\\SO Question\\bin\\Release\\HelloWorld.exe\""
<< " " // don't forget a space between the path and the arguments
<< "myargument";
system(stream.str().c_str());
return 0;
}
答案 0 :(得分:10)
首先,只要您希望在实际字符串值中出现单个反斜杠,就应该在文字字符串中使用 double 反斜杠。这是根据语言语法;一个符合标准的编译器可能会比仅仅警告更糟糕。
在任何情况下,您遇到的问题都是由于包含空格的路径必须在Windows中用双引号括起来。由于双引号本身需要在C ++字符串文字中进行转义,因此需要编写的是
stream << "\"C:\\Tests\\SO Question\\bin\\Release\\HelloWorld.exe\""
<< " " // don't forget a space between the path and the arguments
<< "myargument";
答案 1 :(得分:5)
这会产生一些与反斜杠相关的警告
我相信\
是使用\\
的C ++中的转义字符,而不是解决此问题。