【问题标题】:MFC - How to convert WCHAR to CString?MFC - 如何将 WCHAR 转换为 CString?
【发布时间】:2014-08-23 21:11:06
【问题描述】:

是否可以将 WCHAR 转换为 CString?我需要这样做,甚至将其转换为 char 或 char*。

谢谢!

【问题讨论】:

    标签: c++ string mfc char wchar


    【解决方案1】:

    CString 具有接受char*wchar_t* 数据作为输入的构造函数和赋值运算符。所以你可以直接将它们分配给CString

    如果您想将wchar_t* 转换为char*,请查看WideCharToMultiByte()

    【讨论】:

      【解决方案2】:

      CString 具有接受charchar*wchar_t 的构造函数。 (如果你不明白'WCHAR'和wchar_t的区别,this会是一个很好的参考。)

      所以你可以这样做。

      CString newCString(your_WCHAR);
      

      【讨论】:

      • 能否请您解释一下为什么这是解决问题的好方法。
      【解决方案3】:

      CString 可以同时使用 CHARWCHAR。在其他地方,例如std::string & std::wstring,使用MFC字符串转换宏:CW2A(pszW)

      CHAR B[32]{ "The Matrix Has You" };
      WCHAR WB[32]{ L"Wake up, Neo." };
      std::string str;
      std::wstring wstr{ L"Follow the White Rabbit" };
      
      // std::string from std::wstring:
      str = CW2A(wstr.c_str());
      
      // CString (OK with both CHAR & WCHAR):
      CString str1{ B };
      CString str2{ WB };
      CString str3{ str.c_str() };
      CString str4{ wstr.c_str() };
      
      // std::string from CString:
      str = CW2A(str1);
      

      -

      MFC 通用宏集如下:

      A2CW   (LPCSTR)  -> (LPCWSTR)  
      A2W    (LPCSTR)  -> (LPWSTR)  
      W2CA   (LPCWSTR) -> (LPCSTR)  
      W2A    (LPCWSTR) -> (LPSTR)  
      

      -

      ATL and MFC String Conversion Macros

      【讨论】:

        猜你喜欢
        • 2011-09-07
        • 2010-11-02
        • 2013-10-09
        • 2011-04-12
        • 2011-08-12
        • 2011-12-10
        • 2011-07-26
        • 2011-12-01
        • 1970-01-01
        相关资源
        最近更新 更多