Estructura de datos CString de MFC
Clase CString
{
Público:
//Constructor
//Construye un CString vacío
CString();
//Copiar constructor
CString(const CString & amp; string src);
// desde a carácter único
CString(TCHAR ch, int nRepeat = 1);
//Convertir de cadena ANSI (convertir a TCHAR)
CString(LPCSTR lpsz) ;
//Convertir de cadena UNICODE (convertir a TCHAR)
CString(LPCWSTR lpsz);
Un subconjunto de caracteres en cadena ANSI (convertido a TCHAR )
CString(LPCSTR lpch, int nLength);
//Subconjunto de caracteres en cadena UNICODE (convertido a TCHAR)
CString(LPCWSTR lpch, int nLength);
//De unsigned char
CString(const unsigned char * PSZ);
//Propiedades y operación de amplificador
//Obtener la longitud de los datos
int GetLength()const;
//Si la longitud es cero, es VERDADERO
BOOL IsEmpty()const ;
//Vaciar el contenido
void Vacuum();
//Devuelve un solo carácter en el índice de base cero
p>TCHAR GetAt(int nIndex)const;
//Devuelve un solo carácter en un índice comenzando desde cero
TCHAR operator[](int nIndex)const; >
//Establece un solo carácter en un índice de base cero
void SetAt(int nIndex, TCHAR ch);
//Devuelve un puntero a una cadena constante Puntero
Operador LPCTSTR()const;
//Asignación sobrecargada
//Copia del recuento de referencias de otro CString
const CString & amp operator =(const CString & amp; string src);
//Establece el contenido de la cadena en un solo carácter
const CString & amp operator=(TCHAR ch); p>
#ifdef _UNICODE
const CString & ampoperator =(char ch);
#endif
//De cadena ANSI copiar contenido de cadena ( convertir a TCHAR)
const CString & ampoperator =(LPCSTR lpsz);
//Copiar el contenido de la cadena de la cadena UNICODE (convertir a TCHAR)
const CString & ampoperator =(LPCWSTR lpsz);
//Copiar contenido de cadena de caracteres sin firmar
const CString & ampoperator=( const unsigned char * PSZ);
//Concatenación de cadenas
//Concatenación desde otro CString
const CString & amp operator +=(const CString & string);
//
Concatenar un carácter
const CString & amp operator +=(TCHAR ch);
#ifdef _UNICODE
//Después de convertir caracteres ANSI a TCHAR Conéctalos
const CString & amp operator +=(char ch);
#endif
//Después de convertir caracteres UNICODE a TCHAR, concatenarlos
const CString & operador +=(LPCTSTR lpsz);
amigo CString operador AFXAPI +(const CString & string1,
const CString & ampstring 2);
amigo operador CString AFXAPI + (const CString & amp; string, TCHAR ch
TCHAR ch, const CString & ampstring);
#ifdef _UNICODE
operador amigo CString AFXAPI + (const CString y cadena, char ch);
operador amigo CString AFXAPI + (char ch, const CString y cadena
#endif); p>
operador amigo CString AFXAPI + (const CString y cadena, LPCTSTR lpsz
operador amigo CString AFXAPI + (LPCTSTR lpsz, const CString y cadena amp);
//Comparación de cadenas
//Comparación directa de caracteres
int Compare(LPCTSTR lpsz)const;
//La comparación ignora mayúsculas y minúsculas
int compare nocase(LPCTSTR lpsz)const;
// Comparación compatible con NLS, distingue entre mayúsculas y minúsculas
int Collate(LPCTSTR lpsz)const;
// NLS -comparación que reconoce, no distingue entre mayúsculas y minúsculas
int CollateNoCase(LPCTSTR lpsz) const;
//Extracción de subcadenas simple
//Devuelve nCount caracteres comenzando desde cero
CString Mid(int nFirst, int n count) const;
//Devuelve todos los caracteres empezando desde cero
CString Mid(int nFirst)const; p>
//Devuelve los primeros nCount caracteres en la cadena Character
CString Left(int nCount)const;
//Devuelve nCount caracteres desde el final de la cadena
c string Right(int nCount)const;
//El carácter inicial también está en la cadena pasada
CString span include(LPCTSTR lpszCharSet)const;
//No en la cadena pasada El carácter inicial de
CString span excluyendo(LPCTSTR lpszCharSet)const;
//Conversión arriba/abajo/inversa p>
// Conversión compatible con NLS a mayúsculas
void make lower
();
// Conversión de minúsculas compatible con NLS
void MakeLower
//Invierte la cadena de derecha a izquierda
void make reverse();
//Recortar espacios en blanco (cualquier lado)
//Eliminar espacios en blanco comenzando desde el borde derecho
void trim right( );
//Eliminar espacios en blanco comenzando desde la izquierda
void trim left();
//Recorta cualquier cosa (cualquier lado)
/ /Eliminar chTargets consecutivos comenzando desde la derecha
TrimRight no válido (objetivo TCHAR);
//Eliminar caracteres consecutivos en la cadena pasada,
//Comenzar desde la derecha
void trim right(LPCTSTR lpsz target);
//Eliminar chTargets consecutivos comenzando desde la izquierda
TrimLeft no válido (objetivo TCHAR); p>
//Eliminar caracteres consecutivos en
//La cadena pasada, comenzando desde la izquierda
void trim left(LPCTSTR lpsz objetivos);
//Operaciones avanzadas
//Reemplazar el número de apariciones de chOld con chNew
int Reemplazo(TCHAR·Child, TCHAR·Chinew);
/ /Reemplazar el número de apariciones de la subcadena lpszOld con lpszNew;
//empty lpszNew elimina instancias de lpszOld
int Reemplazar(LPCTSTR lpszOld, LPCTSTR lpszNew);
//Eliminar la aparición de chRemove
int Remove(TCHAR·Kremov);
//In Insertar caracteres en índice de base cero encadenados
//Si el índice excede el final de la cadena
int Insert(int nIndex, TCHAR ch);
//Insertar subcadena en el índice de base cero encadenado
//Si el índice excede el final de la cadena
int Insert(int nIndex, LPCTSTR pstr);
//Elimina nCount caracteres a partir del índice de base cero
int Delete(int nIndex, int nCount = 1);
// Buscar
//Busca caracteres comenzando desde la izquierda, si no los encuentra, es -1
int Find (canal TCHAR) const
//Buscar caracteres comenzando desde la derecha
int ReverseFind(canal TCHAR) constante;
//Buscar caracteres que comiencen desde cero y vayan hacia la derecha
int Find(TCHAR ch, int nStart)const;
//Encuentre la primera instancia de cualquier carácter en la cadena pasada
int FindOneOf(LPCTSTR lpszCharSet)const;
/ /Encuentra la primera instancia de una subcadena
int Find(LPCTSTR lpszSub)const;
//Encuentra la primera instancia de una subcadena en un índice de base cero
int Find(LPCTSTR lpszSub, int nStart) const;
//Simple format
//Utilice la cadena pasada para un formato similar a printf
formato void AFX_CDECL (LPCTSTR lpszFormat,...);
<p>//Utilice recursos de cadenas entre comillas para formato similar a printf
formato void AFX_CDECL (UINT nFormatID,...);
//Utilice formato de formato printf de parámetro variable
void FormatV(LPCTSTR lpszFormat, va_list argList);
//Formato localizado (usando la API FormatMessage)
//Par de caracteres pasados La cadena se formatea usando FormatMessage API
void AFX _ CDECL format message(LPCTSTR lpszFormat,...);
//Formateo usando la API FormatMessage en el recurso de cadena referenciado
void Mensaje en formato AFX _ CDECL(UINT informatid,...);
//Entrada y salida
#ifdef _DEBUG
amigo CDumpContext & operador ampAFXAPI& lt& lt (CDumpContext y ampdc,
const CString y amp string
#endif
Perfil de amigo y operador ampAFXAPI y lt& lt(Archivo y ampar, const CString); & amp string);
Archivo de amigos y operador ampAFXAPI & gt& gt(Archivo & ampar, CString & amp string
// Cargando desde recursos de cadena
BOOL LoadString(UINT nID);
#ifndef _UNICODE
//ANSI & lt;-& gt ;Soporte OEM (convertir cadena en su lugar)
//Convierte una cadena de ANSI a OEM in situ
void AnsiToOem();
// Convierte una cadena de OEM a ANSI in situ
void OemToAnsi();
#endif
# IFN def _AFX_NO_BSTR_Supported
// Compatibilidad con OLE BSTR (para automatización OLE)
/ /Devuelve un BSTR inicializado con los datos de este CString
Constante BSTR AllocSysString();
// p>
//Reasigna el BSTR pasado y copia el contenido de este CString en él
BSTR SetSysString(BSTR* pbstr) constante;
#endif
//Acceda al búfer de implementación de cadenas como una matriz de caracteres "C"
//Obtener un puntero a un búfer modificable que sea al menos tan largo como nMinBufLength
LPTSTR get buffer(int nMinBufLength);
//Liberar el búfer y establezca la longitud en nNewLength (si -1, configúrelo en el primer nul)
void release buffer(int nnew length =-1);
//Obtenga el puntero a el buffer modificable, la longitud es exactamente igual a nNewLength
LPTSTR GetBufferSetLength(int nnew length);
//Libera la memoria no utilizada asignada a la cadena
void free extra();
//Usar LockBuffer/UnlockBuff
erClose refcounting
//Reabrir el recuento de referencias
LPTSTR lock buffer();
//Cerrar el recuento de referencias
desbloqueo nulo buffer();
//Implementación
Público:
~ CString();
int GetAllocLength()const; p>
p>
Protegido:
LPTSTR m _ pchData//Puntero para hacer referencia a datos de cadena contados
//Asistente de implementación
CStringData * obtener datos() const;
void Init();
void allocopy(CString & dest, int nCopyLen, int nCopyIndex, int nExtraLen)
void alloc buffer(int nLen);
void AssignCopy(int nSrcLen, LPCTSTR lpszSrcData);
void concat copy(int nsrc 1 len, LPCTSTR lpszSrc1Data, int nSrc2Len, LPCTSTR lpszsrc 2 datos);
void ConcatInPlace(int nSrcLen, LPCTSTR lpszSrcData);
void copy before write();
void AllocBeforeWrite(int nLen);
liberación vacía();
liberación PASCAL vacía estática (CStringData * pData);
estática int PASCAL segura strlen(LPCTSTR lpsz);
llamada rápida estática y nula FreeData(CStringData * pData);
};