2

如果我将 a 转换std::string为 aCString使用类似的东西:

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

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

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

4

3 回答 3

2

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

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

于 2012-04-27T14:27:22.417 回答
1

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

CString(LPCSTR lpsz);

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

于 2012-04-27T14:29:37.137 回答
1

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

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

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

于 2012-04-27T14:27:46.437 回答