C++ 将两个 char * 连接到 LPTSTR 作为命令行参数
C++ Concatenate two char * to LPTSTR for command line arguments
我是 C++ 的新手,但我正在尝试在 Windows 中构建一个程序来玩弄并发性,其中父进程将启动子进程。是否有 Windows 函数将从我的方法 BuildChildProcess(char * arg1, char * arg2)
中获取 arg1 和 arg2,并将这两个参数连接到 LPTSTR
命令行字符串以用于 CreateProcess 函数?
我最初只尝试 strcat
使用其中一个参数,然后才知道它不安全,所以我尝试了 strcat_s
但要么它对我想做的事情不起作用或者我只是做错了。如果我应该使用它,那么它的使用示例会有所帮助。
谢谢
编辑:
基本上,我如何将两个 char *
C 样式字符串(arg1 和 arg2)连接到 CreateProcess
函数的 lpCommandLine 参数的末尾,类型为 LPTSTR
?
您可以使用以下代码:
BuildChildProcess(char * arg1, char * arg2){
char buff[256];
sprintf_s(buff, 256, TEXT("%s%s"), arg1, arg2);
.........
}
然后 buff 将包含您的两个 char*。如果您需要使用 unicode 字符串,则需要 sprintf_s 的 unicode 版本。
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++,因此可以使用标准库字符串。您对 TCHAR
的使用令人困惑。是 char
还是 wchar_t
?如果是前者,为什么不支持Unicode?您不需要使用 TCHAR
,它只存在于帮助处理需要在 Windows 9x 上 运行 的代码,它没有 Unicode 支持。
您希望从问题的其他部分连接两个名为 arg1
和 arg2
的 char*
C 字符串。这样做:
#include <string>
....
std::string str1 = arg1;
std::string str2 = arg2;
std::string combined = str1 + str2;
它可以写得更简洁,但我想为您明确说明。
如果需要 const char*
,则传递 combined.c_str()
,如果需要 char*
,则传递 &combined[0]
。 char*
的后一个选项要求您使用 C++-11 或更高版本。
就个人而言,我会在这里使用本机宽 Unicode API。这意味着 std::wstring
而不是 std::string
。
我是 C++ 的新手,但我正在尝试在 Windows 中构建一个程序来玩弄并发性,其中父进程将启动子进程。是否有 Windows 函数将从我的方法 BuildChildProcess(char * arg1, char * arg2)
中获取 arg1 和 arg2,并将这两个参数连接到 LPTSTR
命令行字符串以用于 CreateProcess 函数?
我最初只尝试 strcat
使用其中一个参数,然后才知道它不安全,所以我尝试了 strcat_s
但要么它对我想做的事情不起作用或者我只是做错了。如果我应该使用它,那么它的使用示例会有所帮助。
谢谢
编辑:
基本上,我如何将两个 char *
C 样式字符串(arg1 和 arg2)连接到 CreateProcess
函数的 lpCommandLine 参数的末尾,类型为 LPTSTR
?
您可以使用以下代码:
BuildChildProcess(char * arg1, char * arg2){
char buff[256];
sprintf_s(buff, 256, TEXT("%s%s"), arg1, arg2);
.........
}
然后 buff 将包含您的两个 char*。如果您需要使用 unicode 字符串,则需要 sprintf_s 的 unicode 版本。
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++,因此可以使用标准库字符串。您对 TCHAR
的使用令人困惑。是 char
还是 wchar_t
?如果是前者,为什么不支持Unicode?您不需要使用 TCHAR
,它只存在于帮助处理需要在 Windows 9x 上 运行 的代码,它没有 Unicode 支持。
您希望从问题的其他部分连接两个名为 arg1
和 arg2
的 char*
C 字符串。这样做:
#include <string>
....
std::string str1 = arg1;
std::string str2 = arg2;
std::string combined = str1 + str2;
它可以写得更简洁,但我想为您明确说明。
如果需要 const char*
,则传递 combined.c_str()
,如果需要 char*
,则传递 &combined[0]
。 char*
的后一个选项要求您使用 C++-11 或更高版本。
就个人而言,我会在这里使用本机宽 Unicode API。这意味着 std::wstring
而不是 std::string
。