簡體   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