我使用system调用带有参数列表的外部可执行文件。
string all = (excuteablePath + " " + inputDir + " " + outputDir + " " + spacing);
system(all.c_str());在IDE或cout中显示的字符串cout的值为
.\sample.exe .\孙夏^4735\UR7\ .\孙夏^4735\UR7.stl 0.3 0.3 0.3
但是可执行文件的输出是
.\sample.exe .\孙夏4735\UR7\ .\孙夏4735\UR7.stl 0.3 0.3 0.3
字符^显示。
为什么会发生这种情况,我该如何解决呢?
发布于 2018-04-01 00:45:07
理想情况下,您应该使用宽字符串字符和CreateProcess。
std::wstring wstr =
L".\\sample.exe .\\孙夏^4735\\UR7\\ .\\孙夏^4735\\UR7.stl 0.3 0.3 0.3";
STARTUPINFOW si = { sizeof(si) };
PROCESS_INFORMATION pi;
CreateProcessW(0, &wstr[0], NULL, NULL, TRUE, NORMAL_PRIORITY_CLASS, NULL, NULL, &si, &pi);注意W后面的STARTUPINFO和CreateProcess
如果被迫使用ANSI代码页,则使用CreateProcess的ANSI版本。
std::string str =
".\\sample.exe .\\孙夏^4735\\UR7\\ .\\孙夏^4735\\UR7.stl 0.3 0.3 0.3";
STARTUPINFOA si = { sizeof(si) };
PROCESS_INFORMATION pi;
CreateProcessA(0, &str[0], NULL, NULL, TRUE, NORMAL_PRIORITY_CLASS, NULL, NULL, &si, &pi);https://stackoverflow.com/questions/49558871
复制相似问题