MFCとSTLと文字列

あるいは、CStringとstd::stringとchar *
で、いつもCString → char * → std::stringな変換で迷うのでメモを残す
CString から char * への変換


CString str = "いろはにほへと";
char * p = new char[str.GetLength() + 1];
strcpy(p,str);
delete [] p;
char * から CStringへの変換

char a[6] = "abcde";
CString cstrA;
cstrA = a;
std::stringからchar *への変換

std::string strA = "abcdefg";
char a[] = strA.c_str(); // 末尾に0x00の挿入されたchar *として使える
char * からstd::stringへの変換

char a[8] = "abcdefg";
std::string stdB(a); // 引数としてconst char * を受け取るコンストラクタを使う