【问题标题】:how can convert LPCSTR string into LPCTSTR string?如何将 LPCSTR 字符串转换为 LPCTSTR 字符串?
【发布时间】: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

【问题讨论】:

    标签: string casting lpcstr


    【解决方案1】:

    我试过了,效果很好:

    #include <iostream>
    #include <atlstr.h>
    
    using namespace std;
    int main()
    {
        LPCSTR stringToConvert = "My troublesome string";
        CString transitionString = stringToConvert;
        LPCTSTR myDesiredString = transitionString;
    
        wcout  << myDesiredString;
    }
    

    【讨论】:

      【解决方案2】:

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

      您也可以这样做。 7bits ASCII -> wchar 应该很简单。

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

      【讨论】:

        【解决方案3】:

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

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

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

        【讨论】:

          【解决方案4】:

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

          【讨论】:

            猜你喜欢
            • 2015-08-12
            • 1970-01-01
            • 2012-09-16
            • 2012-05-16
            • 2018-04-30
            • 2014-05-26
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多