CStringT到char []

Jus*_*tin 3 c++ cstring

我正在尝试更改一些遗留代码.我需要填写一个char[] ext使用的文件扩展名filename.Right(3).问题是我不知道如何从a转换CStringT为a char[].

必须有一个非常简单的解决方案,我只是没有意识到......

TIA.

Nic*_*yer 5

如果您可以访问ATL,我想您在使用CString时可以访问,那么您可以查看ATL转换类,如CT2CA.

CString fileExt = _T ("txt");
CT2CA fileExtA (fileExt);
Run Code Online (Sandbox Code Playgroud)

如果需要执行转换(如编译Unicode时),则CT2CA会分配一些内部存储器并执行转换,从而破坏其析构函数中的内存.如果编译ANSI,则不需要执行转换,因此它只是挂起指向原始字符串的指针.它还提供隐式转换,const char *因此您可以像任何C风格的字符串一样使用它.

这使得转换变得非常简单,但需要注意的是,如果在CT2CA超出范围后需要挂起字符串,则需要将字符串复制到您控制下的缓冲区中(而不仅仅是存储指向它的指针).否则,CT2CA会清理转换后的缓冲区,并且您有一个悬空参考.