首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在C++中用system调用excutables时参数字符串中的Char损失

在C++中用system调用excutables时参数字符串中的Char损失
EN

Stack Overflow用户
提问于 2018-03-29 14:37:29
回答 1查看 49关注 0票数 2

我使用system调用带有参数列表的外部可执行文件。

代码语言:javascript
复制
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

字符^显示。

为什么会发生这种情况,我该如何解决呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-01 00:45:07

理想情况下,您应该使用宽字符串字符和CreateProcess

代码语言:javascript
复制
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后面的STARTUPINFOCreateProcess

如果被迫使用ANSI代码页,则使用CreateProcess的ANSI版本。

代码语言:javascript
复制
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);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49558871

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档