如何将LPCSTR字符串转换为LPCTSTR字符串?

时间:2009-10-29 09:22:19

标签: string casting lpcstr

我正在尝试将LPCSTR字符串转换为LPCTSTR字符串。我想连接两个字符串,当我尝试这样

LPCTSTR str1 = L"Raja"
LPCSTR str2 = "Kumar"
wcscat_s(str1,(LPCTSTR)str2);

我发现o / p像Raja .... r(junkvalues)....如何将LPCSTR转换为LPCTSTR

4 个答案:

答案 0 :(得分:2)

请参阅以下注释:Unraveling Strings in Visual C++。这些笔记讨论了您将在Microsoft C ++开发中看到的各种字符串以及如何在它们之间进行转换。

答案 1 :(得分:1)

LPCTSTR可以是纯字符或宽字符,具体取决于您的项目设置。此外,您不可能连接宽字符串和纯字符串。您需要将一个转换为兼容的形式(从宽到多字节,反之亦然),然后连接。

假设您希望目标是一个宽字符串,您需要将"Kumar"转换为宽字符串。为此,请使用MultiByteToWideChar函数和相应的代码页。

在MSDN和John的链接上查找this KB文章。

答案 2 :(得分:0)

如果您的代码是使用UNICODE编译的话,MultiByteToWideChar是唯一的方法。

或者你也可以这样做。 7位ASCII - > wchar应该很容易。

TCHAR str3[256] = { 0 };
for (int i = 0; str2[i] != 0; i++) str3[i] = str2[i];

答案 3 :(得分:0)

我尝试了这个方法:

#include <iostream>
#include <atlstr.h>

using namespace std;
int main()
{
    LPCSTR stringToConvert = "My troublesome string";
    CString transitionString = stringToConvert;
    LPCTSTR myDesiredString = transitionString;

    wcout  << myDesiredString;
}