【发布时间】:2010-12-11 04:18:47
【问题描述】:
我正在尝试将LPCSTR 字符串转换为LPCTSTR 字符串。我想连接两个字符串,当我这样尝试时
LPCTSTR str1 = L"Raja"
LPCSTR str2 = "Kumar"
wcscat_s(str1,(LPCTSTR)str2);
我找到了像 Raja..r(junkvalues)..这样的 o/p,如何将LPCSTR 类型转换为LPCTSTR?
【问题讨论】:
我正在尝试将LPCSTR 字符串转换为LPCTSTR 字符串。我想连接两个字符串,当我这样尝试时
LPCTSTR str1 = L"Raja"
LPCSTR str2 = "Kumar"
wcscat_s(str1,(LPCTSTR)str2);
我找到了像 Raja..r(junkvalues)..这样的 o/p,如何将LPCSTR 类型转换为LPCTSTR?
【问题讨论】:
我试过了,效果很好:
#include <iostream>
#include <atlstr.h>
using namespace std;
int main()
{
LPCSTR stringToConvert = "My troublesome string";
CString transitionString = stringToConvert;
LPCTSTR myDesiredString = transitionString;
wcout << myDesiredString;
}
【讨论】:
如果您的代码是使用 UNICODE 编译的,那么 MultiByteToWideChar 是唯一的方法。
您也可以这样做。 7bits ASCII -> wchar 应该很简单。
TCHAR str3[256] = { 0 };
for (int i = 0; str2[i] != 0; i++) str3[i] = str2[i];
【讨论】:
LPCTSTR 可以是纯字符或宽字符,具体取决于您的项目设置。此外,您不可能将宽字符串和纯字符字符串连接起来。您需要将一个转换为兼容的形式(宽到多字节,反之亦然),然后进行连接。
假设您希望目标是一个宽字符串,您需要将"Kumar" 转换为一个宽字符串。为此,请使用带有适当代码页的 MultiByteToWideChar 函数。
在 MSDN 和 John 的链接上查找 this KB 文章。
【讨论】:
请参阅这些说明:Unraveling Strings in Visual C++。这些注释讨论了您将在 Microsoft C++ 开发中看到的各种字符串以及如何在它们之间进行转换。
【讨论】: