【发布时间】:2011-08-29 15:39:18
【问题描述】:
我正在尝试连接 LPCWSTR 和 char[](并将 LPCWSTR 作为输出)。
我该怎么做?
【问题讨论】:
我正在尝试连接 LPCWSTR 和 char[](并将 LPCWSTR 作为输出)。
我该怎么做?
【问题讨论】:
您正在尝试将 UNICODE 字符串与 ANSI 字符串连接。除非您将 ANSI 字符串转换为 UNICODE,否则这将不起作用。您可以为此使用MultiByteToWideChar,如果您使用的是ATL 或MFC,则可以使用ATL and MFC String Conversion Macros。
【讨论】:
MultiByteToWideChar() 提供的选项,请尝试mbstowcs()。
mbstowcs() 表示多字节 -> 宽字符。您可能正在以相反的方式使用它。你也可以试试wcstombs()。
您可以使用以下代码(来自MSDN)将char[] 数组转换为宽字符数组
wchar_t * wcstring = new wchar_t[strlen(array) + 1];
// Convert char* string to a wchar_t* string.
size_t convertedChars = 0;
mbstowcs_s(&convertedChars, wcstring, strlen(array) + 1, array, _TRUNCATE);
之后,您可以使用wcscat_s 将转换后的字符数组连接到您原来的LPCWSTR。
【讨论】:
mbstowcs 直接写入该缓冲区。这节省了wcscat 的不必要副本