如何将wchar_t字符串分配给用户定义类的 CString 成员

How to assign wchar_t string to CString member of user defined class?

本文关键字:定义 给用户 成员 CString 分配 字符串 wchar      更新时间:2023-10-16

这是我使用的代码如下:

class A
{
public:
  CString abc;
  void fun1();
};
void A::fun1()
{
  wchar_t *Str = L"Stack Overflow";
  CString xyz = Str; // This works fine.
  abc = Str; // Whether this assignment is correct?
}
int main()
{
   A obj;
   obj.fun1();
   return 0;
}

调试时,我发现当断点穿过初始化代码时 abc = Str,我在变量窗口中看到abc中的字符串没有更新"Stack Overflow"

在这里,xyz 字符串在我查看调试器窗口时更新为"堆栈溢出"。

我不熟悉CString(主要是在unix/linux环境中开发(,但提到这一点,我会使用CStringW来存储wchar_t字符串。

但我认为你对CString的初始化是错误的。根据MSDN文档,我宁愿做这样的事情:

CStringW abc = _T(L"Stack Overflow");

否则,我建议使用 cstdlib 中的 wcstombs 将 wchar_t* 转换为字符 * 并坚持标准。

请参阅 wcstombs 文档。