C++ 将两个字符 * 连接到命令行参数的 LPTSTR
C++ Concatenate two char * to LPTSTR for command line arguments
我是C++新手,但我正在尝试在Windows中构建一个程序来玩父进程将启动子进程的并发性。是否有一个 Windows 函数将从我的方法中获取 arg1 和 arg2,BuildChildProcess(char * arg1, char * arg2)
,并将这两个参数连接到要在 CreateProcess 函数中使用的LPTSTR
命令行字符串?
在我得知它不安全之前,我最初只尝试使用其中一个参数进行strcat
,所以我随后尝试了strcat_s
但要么它不适用于我正在尝试做的事情,要么我只是做错了。如果我应该使用它,那么使用它的工作示例会有所帮助。
谢谢
编辑:基本上,如何将两个char *
C 样式字符串(arg1 和 arg2(连接到 CreateProcess
函数的 lpCommandLine 参数的末尾,即类型 LPTSTR
?
由于您使用C++因此可以使用标准库字符串。您对TCHAR
的使用令人困惑。是char
还是wchar_t
?如果是前者,为什么不支持Unicode?您不需要使用TCHAR
它只是为了帮助处理需要在不支持 Unicode 的 Windows 9x 上运行的代码。
从问题的其他部分,您希望连接两个名为 arg1
和 arg2
的 char*
C 字符串。这样做:
#include <string>
....
std::string str1 = arg1;
std::string str2 = arg2;
std::string combined = str1 + str2;
它可以写得更简洁,但我想为你明确一点。
然后通过combined.c_str()
如果您需要const char*
或&combined[0]
如果您需要char*
。char*
的后一个选项要求您使用 C++-11 或更高版本。
就个人而言,我会在这里使用本机宽的Unicode API。这意味着std::wstring
而不是std::string
。
以下代码:
BuildChildProcess(char * arg1, char * arg2){
char buff[256];
sprintf_s(buff, 256, TEXT("%s%s"), arg1, arg2);
.........
}
然后buff将包含你的两个字符*。如果您需要使用 unicode 字符串,则需要 unicode 版本的 sprintf_s。
https://msdn.microsoft.com/en-us/library/ce3zzk1k.aspx
如果您需要从 char 转换为 UNICODE,那么有 API 函数 MultiByteToWideChar((
https://msdn.microsoft.com/en-us/library/windows/desktop/dd319072(v=vs.85(.aspx
- 从命令行c++发送文本文件名
- 为cl.exe(Visual Studio代码)指定命令行C++版本
- 如何在OMNET++中指定与命令行参数组合的输出文件名
- 数组长度,为什么从命令行获取时不能使用它?
- 如何处理linux终端中带有负号(-)的C++中的命令行参数
- VS Code "command":"make"与终端窗口中的命令行"make"不同
- 未定义的引用 .. 使用 OpenCV 编译 C++ 代码时,从命令行
- 通过 Openssl 命令行加密,通过 c++ 解密
- CMake "--target install"无需"--build"命令行
- 更改命令行 qt5 源代码构建配置的正确/快速方法
- 使用 C++ 将命令行参数拆分为参数/向量
- 用于解析 win64 堆栈跟踪的命令行客户端(可以访问符号服务器)
- LLVM | codegen 用于带有命令行选项的程序输入功能
- 如何在OMNET++中添加专门的命令行参数?
- Makefile g++ 使用命令行中的 -D 变量进行编译,默认值
- 在命令行中创建快捷命令
- 在命令行上将输入显示到数组中时如何删除 ./a.out?
- 如何使用分隔符连接命令行参数
- C++ 将两个字符 * 连接到命令行参数的 LPTSTR
- 连接命令行参数的最佳方式