【问题标题】:CString construction from std::string - copy chars or pointer从 std::string 构造 CString - 复制字符或指针
【发布时间】:2012-05-08 07:25:28
【问题描述】:

如果我将 std::string 转换为 CString 使用类似:

std::string ss("Foo");
CString cs( ss.c_str() );

CString 是从 ss 复制字符还是简单地复制 char* 指针?

我对@9​​87654327@函数的理解是,它返回一个指向std::string拥有的字符数组的指针。因此,在内部使用 CString 似乎是一个非常糟糕的主意,因为它们中的任何一个上的任何非常量方法都会使另一个持有的指针无效。

【问题讨论】:

    标签: c++ mfc cstring stdstring


    【解决方案1】:

    采用const char*CString 构造函数会将数据复制到其内部结构中。和这样做是一样的:

    CString test = "This is a test" 甚至这个 CString test("This is a test")

    【讨论】:

      【解决方案2】:

      CString 构造函数(link) 的文档说:

      构造函数将输入数据复制到新分配的存储中。

      因此,必须复制您的数据。

      【讨论】:

        【解决方案3】:

        documentation 表示字符串将被复制,因此它不会直接操作 std::string 缓冲区。

        CString(LPCSTR lpsz);

        lpsz - 要复制到此 CString 对象中的以 null 结尾的字符串。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-03-01
          • 2011-06-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-03-20
          • 2010-10-27
          • 1970-01-01
          相关资源
          最近更新 更多