c++ string mfc atl wtl

c++ - ¿Debo usar CString, basic_string<TCHAR>, o alguna otra cosa con ATL/WTL?



mfc (2)

Mi preferencia sería seguir con CString para ATL / MFC / WTL. No es como si tuviera muchas opciones de portabilidad si está usando esos marcos de todos modos; y sabes lo que dicen: When in Rome ... estás When in Rome ...

Además, CString tiene algunos detalles al respecto

  • Puede cargar cadenas de recursos desde ejecutables usando CString::LoadString
  • Obtenga acceso directo al búfer de cadena interno usando CString::GetBuffer/ReleaseBuffer
  • Convierta silenciosamente entre CStringA y CStringW
  • Realizar el formateo tipo printf utilizando CString::Format

Solo aprendí un poco de ATL en los últimos días (después de darme cuenta de cuánto dolor está Win32 puro) y también aprendí sobre WTL y MFC, y por lo que veo, hay bastantes clases de cuerdas diferentes disponibles para yo.

Solía hacer algo como esto:

#include <tchar.h> #include <string> namespace std { typedef basic_string<TCHAR> _tstring; }

y luego use _tstring en todas partes en mi código. Después de aprender algo de ATL, aprendí que hay una clase de CString en atltmp.h . Aparentemente, hay otra clase de CString en WTL y otra clase de CString en MFC.

No tengo idea si me quedaré con ATL o si cambiaré a WTL, MFC u otra cosa. Pero en este momento, estoy en el proceso de convertir mi código Win32 a ATL, y no estoy seguro de qué cambiar y qué conservar.

¿Debo hacer que mis cadenas usen CString lugar de _tstring ? ¿Hay algún beneficio al hacerlo, considerando tanto el tamaño ejecutable ( excluidas las bibliotecas compartidas) como la portabilidad / compatibilidad?


Algo que acabo de leer es que CString no admite caracteres nulos.

Supongo que me quedaré con STL, entonces.