2

std::string次のようなものを使用してをに変換する場合CString

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

CStringから文字をコピーしますか、それともss単にchar*ポインタをコピーしますか?

この関数についての私の理解は、c_str()が所有する文字配列へのポインターを返すことstd::stringです。したがって、CStringこれを内部で使用することは、どちらか一方に一定でないメソッドがあると、もう一方に保持されているポインターが無効になるため、非常に悪い考えのように思われます。

4

3 に答える 3

2

を受け取るCStringコンストラクターはconst char*、データをその内部構造にコピーします。これを行うのと同じです:

CString test = "This is a test" またはこれさえ CString test("This is a test")

于 2012-04-27T14:27:22.417 に答える
1

CStringコンストラクターのドキュメント(リンク)は次のように述べています。

コンストラクターは、入力データを新しく割り当てられたストレージにコピーします。

したがって、データをコピーする必要があります。

于 2012-04-27T14:27:46.437 に答える
1

ドキュメントには、文字列がコピーされると記載されているため、std::stringバッファを直接操作することはありません。

CString(LPCSTR lpsz);

lpsz-このCStringオブジェクトにコピーされるnullで終了する文字列。

于 2012-04-27T14:29:37.137 に答える