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
yCStringW
- Realizar el formateo tipo
printf
utilizandoCString::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.