我使用system
使用参数列表调用外部可删除文件。
string all = (excuteablePath + " " + inputDir + " " + outputDir + " " + spacing);
system(all.c_str());
IDE或all
中显示的字符串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
角色^
消失了。
为什么会发生这种情况,我该如何解决?
答案 0 :(得分:1)
理想情况下,您应该使用宽字符串和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代码页,请使用ANSI版CreateProcess
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);