当C 中的系统调用conconculables时,参数字符串中的字符损失
Char loss in argument string when call excutables with system in C++
我使用 system
调用带有参数列表的外部授权文件。
string all = (excuteablePath + " " + inputDir + " " + outputDir + " " + spacing);
system(all.c_str());
IDE或cout
中显示的字符串all
的值是
.sample.exe .孙夏^4735UR7 .孙夏^4735UR7.stl 0.3 0.3 0.3
但是可执行文件的输出为
.sample.exe .孙夏4735UR7 .孙夏4735UR7.stl 0.3 0.3 0.3
字符^
消失了。
为什么会发生这种情况?如何解决此问题?
理想情况下,您应该使用宽字符串字符和 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);
请注意STARTUPINFO
和CreateProcess
之后的W
如果您被迫使用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);
相关文章:
- 如何使用Luacneneneba API正确读取字符串和表参数
- 如何使用字符串文字作为宏参数
- 如何将可变长度参数联接为字符串
- 如何使用字符串find_first_of缓冲区形式(size_t n 参数)
- 具有字符串化的可变参数宏的现代/通用方法
- C++ 构造函数参数:字符串、整数、整数、整数
- 当C 中的系统调用conconculables时,参数字符串中的字符损失
- 模板参数字符串与整数
- #define 参数字符串化,但宽字符串 L " instead of "
- std::getline 用于 ifstream,使用参数字符串或 char *
- 通过参数字符串化宏调用模板函数
- 可变参数字符串比较
- 为什么位集的构造函数有参数字符串::charT 零,字符串::charT one)
- c++中stdbind在带有参数(字符串)的函数中的用法
- 当使用字符变量作为参数(字符串转换为字符)时,Std::rename()文件将不起作用
- C/ c++预处理器中的宏参数字符串化为宽字符串字面值
- 如何比较Visual C++中的参数字符串
- C++错误:推断出参数'T'字符串与常量字符的冲突类型 *
- 传递参数字符串,其中包含空格和引号
- 函数参数字符串通过引用传递