C# C++中带参数的C++运行 我在C++上有一个应用程序,在GUI上有一个应用程序。 在新的进程中,我从C中运行exe文件C++,并将参数传递给命令行。p>
代码C:C# C++中带参数的C++运行 我在C++上有一个应用程序,在GUI上有一个应用程序。 在新的进程中,我从C中运行exe文件C++,并将参数传递给命令行。p>,c#,c++,C#,C++,代码C: System.Diagnostics.Process Proc = new System.Diagnostics.Process(); Proc.StartInfo.FileName = "main.exe"; Proc.StartInfo.Arguments = "p"; Proc.Start(); 代码C++: if (char(argv[1]) == 'p') { program.SetUniform("cur_color", make_fl
System.Diagnostics.Process Proc = new System.Diagnostics.Process();
Proc.StartInfo.FileName = "main.exe";
Proc.StartInfo.Arguments = "p";
Proc.Start();
代码C++:
if (char(argv[1]) == 'p')
{
program.SetUniform("cur_color", make_float3(0.5f, 0.5f, 0.0f));
std::cout << "This is true" << std::endl;
}
else {
std::cout << "This is false " << argv[1] << std::endl;
program.SetUniform("cur_color", make_float3(0.9f, 0.9f, 0.9f));
}
但我得到的结果是,这是假的p
我不知道为什么。你能帮助我吗?传递的参数类型可能有问题吗?谢谢 > P> >不能比较这种方式,因为C++中的参数是以char **形式传递的,其中ARGV(0)ARVV(1)是由空间分隔的参数创建的数组。p> 例如:
main.exe foo bar
argv[0] == ['f','o','o']
argv[1] == ['b','a','r']
C# Program Calling C++ Exe
main.exe p foo bar
C++ Program Getting Parameters and comparing them
argv[1][0] == 'p'
文件:
因此,您需要遍历字符以进行比较,或者从argv生成std::vector
例如:
main.exe foo bar
argv[0] == ['f','o','o']
argv[1] == ['b','a','r']
C# Program Calling C++ Exe
main.exe p foo bar
C++ Program Getting Parameters and comparing them
argv[1][0] == 'p'
比较简单的方法,但在非复杂解决方案中不会更快:
std::vector<std::string> vectorOfArguments(argv + 1, argv + argc);
希望有帮助