来自std :: string的CString构造 - 复制字符或指针

时间:2012-04-27 14:24:14

标签: c++ mfc cstring stdstring

如果我使用以下内容将std::string转换为CString

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

CString是否会复制ss中的字符,还是只复制char*指针?

我对c_str()函数的理解是它返回一个指向std::string所拥有的字符数组的指针。所以让CString在内部使用这个似乎是一个非常糟糕的主意,因为任何一个非常态方法都会使另一个中的指针无效。

3 个答案:

答案 0 :(得分:2)

采用CString的{​​{1}}构造函数会将数据复制到其内部结构中。这与此相同:

const char* 甚至这个 CString test = "This is a test"

答案 1 :(得分:1)

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

  

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

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

答案 2 :(得分:1)

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

  

CString(LPCSTR lpsz);

     

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