C# C++中带参数的C++运行 我在C++上有一个应用程序,在GUI上有一个应用程序。 在新的进程中,我从C中运行exe文件C++,并将参数传递给命令行。p>

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

代码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_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);
希望有帮助