C++;使用命令行参数执行另一个程序的程序 < >如何执行带有C++程序参数的命令行程序?这是我在网上发现的:

C++;使用命令行参数执行另一个程序的程序 < >如何执行带有C++程序参数的命令行程序?这是我在网上发现的:,c++,command-line,command,command-line-arguments,C++,Command Line,Command,Command Line Arguments,std::stringstream; 流动 这会给出几个与反斜杠相关的警告 >我相信代码> \/COD>是使用 \\/C>的C++中的一个转义字符,它可能会解决这个问题。 < P>首先,当你希望一个反斜杠出现在实际的字符串值中时,你应该在字串中使用双反斜杠。这是根据语言语法;一个合格的编译器可能比简单的警告更糟糕 在任何情况下,您遇到的问题都是因为在Windows中包含空格的路径必须用双引号括起来。由于双引号本身需要在C++字符串文字中被释放,所以需要编写的是 stream <<

std::stringstream;
流动
这会给出几个与反斜杠相关的警告


<> >我相信<>代码> \/COD>是使用<代码> \\/C>的C++中的一个转义字符,它可能会解决这个问题。

< P>首先,当你希望一个反斜杠出现在实际的字符串值中时,你应该在字串中使用双反斜杠。这是根据语言语法;一个合格的编译器可能比简单的警告更糟糕

在任何情况下,您遇到的问题都是因为在Windows中包含空格的路径必须用双引号括起来。由于双引号本身需要在C++字符串文字中被释放,所以需要编写的是

stream << "\"C:\\Tests\\SO Question\\bin\\Release\\HelloWorld.exe\""
       << " " // don't forget a space between the path and the arguments
       << "myargument";

stream另外,您的代码将传递字符串“myarguments”,而不是一个包含此信息的变量,这可能与预期的一样。知道如何从系统中重定向stdout吗(…)对于std::string或std::stringstream?@Pupsik,系统函数将返回一个int。显然,您需要知道正在使用的任何操作系统的状态代码:“如果命令不是空指针,则返回的值取决于系统和库的实现,但如果受支持,通常应为被调用命令返回的状态代码。”。“-从-然后您可以根据返回的int生成正确的错误消息。@Pupsik否。我正在和另一个Pupsik说话。”。约翰尼·普普西克。他来自爱尔兰。PS:C++实际上有一个用于连接字符串的<代码> +/COD>操作符。示例V.1:<代码>字符串MyString =“某物”;myString+=“其他东西”
或v.2:直接但使用typecast
stringmy=(string)“something”+“+”something“+”other”要点是:您不必为此使用其他库…在这样的程序中,您可能希望返回退出值
HelloWorld.exe
,而不是零。也就是说,将最后两条语句替换为:
returnsystem(stream.str().c_str())
std::stringstream stream;
stream <<"C:\Tests\SO Question\bin\Release\HelloWorld.exe "<<"myargument";
system(stream.str().c_str());
#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;
}
stream << "\"C:\\Tests\\SO Question\\bin\\Release\\HelloWorld.exe\""
       << " " // don't forget a space between the path and the arguments
       << "myargument";