繁体   English   中英

C ++将两个char *连接到LPTSTR以获取命令行参数

[英]C++ Concatenate two char * to LPTSTR for command line arguments

我是C ++的新手,但我正在尝试在Windows中构建一个程序来解决并发问题,其中父进程将启动子进程。 是否有一个Windows函数将从我的方法BuildChildProcess(char * arg1, char * arg2)获取arg1和arg2,并将这两个参数连接到要在CreateProcess函数中使用的LPTSTR命令行字符串?

在我得知它是不安全的之前,我只用其中一个参数尝试了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字符串,则需要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 ++,因此可以使用标准库字符串。 您对TCHAR使用令人困惑。 char还是wchar_t 如果是前者,为什么不支持Unicode呢? 您不应该使用仅存在的TCHAR来帮助需要在没有Unicode支持的Windows 9x上运行的代码。

从问题的其他部分开始,您希望连接两个名为arg1arg2 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 Unicode API。 这意味着std::wstring而不是std::string

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM