Clase CStringT
Esta clase representa un CStringT objeto .
Sintaxis
template<typename BaseType, class StringTraits>
class CStringT :
public CSimpleStringT<BaseType,
_CSTRING_IMPL_::_MFCDLLTraitsCheck<BaseType, StringTraits>::c_bIsMFCDLLTraits>
Parámetros
BaseType
Tipo de carácter de la clase de cadena. Puede ser uno de los siguientes:
char(para cadenas de caracteres ANSI).wchar_t(para cadenas de caracteres Unicode).TCHAR(para cadenas de caracteres ANSI y Unicode).
StringTraits
Determina si la clase de cadena necesita compatibilidad con la biblioteca Run-Time C (CRT) y dónde se encuentran los recursos de cadena. Puede ser uno de los siguientes:
StrTraitATL<wchar_t | char | TCHAR, ChTraitsCRT<wchar_t | char | TCHAR>>La clase requiere compatibilidad con CRT y busca cadenas de recursos en el módulo especificado por (un miembro de la clase
m_hInstResourcede módulo de la aplicación).StrTraitATL<wchar_t | char | TCHAR, ChTraitsOS<wchar_t | char |TCHAR>>La clase no requiere compatibilidad con CRT y busca cadenas de recursos en el módulo especificado por (un miembro de la clase
m_hInstResourcede módulo de la aplicación).StrTraitMFC<wchar_t | char | TCHAR, ChTraitsCRT<wchar_t | char | TCHAR>>La clase requiere compatibilidad con CRT y busca cadenas de recursos mediante el algoritmo de búsqueda MFC estándar.
StrTraitMFC<wchar_t | char | TCHAR, ChTraitsOS<wchar_t | char | TCHAR>>La clase no requiere compatibilidad con CRT y busca cadenas de recursos mediante el algoritmo de búsqueda MFC estándar.
Miembros
Constructores públicos
| NOMBRE | Descripción |
|---|---|
CStringT::CStringT |
Construye un CStringT objeto de varias maneras. |
CStringT::~CStringT |
Destruye un objeto CStringT . |
Métodos públicos
| NOMBRE | Descripción |
|---|---|
CStringT::AllocSysString |
Asigna un a BSTR partir de CStringT datos. |
CStringT::AnsiToOem |
Realiza una conversión local del juego de caracteres ANSI al juego de caracteres OEM. |
CStringT::AppendFormat |
Anexa datos con formato a un objeto CStringT existente. |
CStringT::Collate |
Compara dos cadenas (distingue mayúsculas de minúsculas y usa información específica de la configuración regional). |
CStringT::CollateNoCase |
Compara dos cadenas (sin diferenciar mayúsculas de minúsculas, usa información específica de la configuración regional). |
CStringT::Compare |
Compara dos cadenas (distingue mayúsculas de minúsculas). |
CStringT::CompareNoCase |
Compara dos cadenas (sin diferenciar mayúsculas de minúsculas). |
CStringT::Delete |
Elimina un carácter o caracteres de una cadena. |
CStringT::Find |
Busca un carácter o subcadena dentro de una cadena mayor. |
CStringT::FindOneOf |
Busca el primer carácter de coincidencia de un conjunto. |
CStringT::Format |
Da formato a la cadena sprintf tal como lo hace. |
CStringT::FormatMessage |
Da formato a una cadena de mensaje. |
CStringT::FormatMessageV |
Da formato a una cadena de mensaje mediante una lista de argumentos de variable. |
CStringT::FormatV |
Da formato a la cadena mediante una lista de variables de argumentos. |
CStringT::GetEnvironmentVariable |
Establece la cadena en el valor de la variable de entorno especificada. |
CStringT::Insert |
Inserta un solo carácter o una subcadena en el índice especificado dentro de la cadena. |
CStringT::Left |
Extrae la parte izquierda de una cadena. |
CStringT::LoadString |
Carga un objeto CStringT existente desde un recurso Windows existente. |
CStringT::MakeLower |
Convierte todos los caracteres de esta cadena en caracteres en minúsculas. |
CStringT::MakeReverse |
Invierte la cadena. |
CStringT::MakeUpper |
Convierte todos los caracteres de esta cadena en caracteres en mayúsculas. |
CStringT::Mid |
Extrae la parte central de una cadena. |
CStringT::OemToAnsi |
Realiza una conversión local del juego de caracteres OEM al juego de caracteres ANSI. |
CStringT::Remove |
Quita los caracteres indicados de una cadena. |
CStringT::Replace |
Reemplaza los caracteres indicados por otros caracteres. |
CStringT::ReverseFind |
Busca un carácter dentro de una cadena mayor; comienza desde el final. |
CStringT::Right |
Extrae la parte derecha de una cadena. |
CStringT::SetSysString |
Establece un objeto BSTR existente con datos de un objeto CStringT . |
CStringT::SpanExcluding |
Extrae caracteres de la cadena, empezando por el primer carácter, que no están en el conjunto de caracteres identificado por pszCharSet . |
CStringT::SpanIncluding |
Extrae una subcadena que contiene solo los caracteres de un conjunto. |
CStringT::Tokenize |
Extrae los tokens especificados en una cadena de destino. |
CStringT::Trim |
Recorta todos los caracteres de espacio en blanco iniciales y finales de la cadena. |
CStringT::TrimLeft |
Recorta los caracteres de espacio en blanco iniciales de la cadena. |
CStringT::TrimRight |
Recorta los caracteres de espacio en blanco finales de la cadena. |
Operadores
| Nombre | Descripción |
|---|---|
CStringT::operator = |
Asigna un nuevo valor a un CStringT objeto . |
CStringT::operator + |
Concatena dos cadenas, o un carácter y una cadena. |
CStringT::operator += |
Concatena una nueva cadena al final de una cadena existente. |
CStringT::operator == |
Determina si dos cadenas son lógicamente iguales. |
CStringT::operator != |
Determina si dos cadenas no son lógicamente iguales. |
CStringT::operator < |
Determina si la cadena del lado izquierdo del operador es menor que la cadena del lado derecho. |
CStringT::operator > |
Determina si la cadena del lado izquierdo del operador es mayor que la cadena del lado derecho. |
CStringT::operator <= |
Determina si la cadena del lado izquierdo del operador es menor o igual que la cadena del lado derecho. |
CStringT::operator >= |
Determina si la cadena del lado izquierdo del operador es mayor o igual que la cadena del lado derecho. |
Comentarios
CStringThereda de la CStringT. Implementa características avanzadas, como la manipulación de caracteres, la ordenación y la CStringT búsqueda.
Nota:
CStringT Los objetos son capaces de producir excepciones. Esto sucede cuando un CStringT objeto se queda sin memoria por cualquier motivo.
Un CStringT objeto consta de una secuencia de caracteres de longitud variable. CStringT proporciona funciones y operadores que usan una sintaxis similar a la de Basic. Los operadores de concatenación y comparación, junto con la administración simplificada de memoria, facilitan el uso de objetos que CStringT las matrices de caracteres normales.
Nota:
Aunque es posible crear instancias CStringT que contengan caracteres NULL incrustados, se recomienda usar en él. Llamar a métodos y operadores CStringT en objetos que contienen caracteres null incrustados puede producir resultados no deseados.
Al usar diferentes combinaciones de los parámetros y , los objetos pueden tener los siguientes BaseTypeStringTraitsCStringT tipos, predefinidos por las bibliotecas ATL.
Si usa en una aplicación ATL:
CString, CStringA y se CStringW exportan desde el archivo DLL de MFC (MFC90.DLL), nunca desde archivos DLL de usuario. Esto se hace para evitar CStringT que se defina varias veces.
Nota:
Si el código contiene la solución alternativa para los errores del vinculador que se describen en Exportación de clases de cadena mediante CStringT, debe quitar ese código. Ya no es necesario.
Los siguientes tipos de cadena están disponibles en las aplicaciones basadas en MFC:
| Tipo CStringT | Declaración |
|---|---|
CStringA |
Cadena de tipo de carácter ANSI compatible con CRT. |
CStringW |
Cadena de tipo de carácter Unicode compatible con CRT. |
CString |
Tipos de caracteres ANSI y Unicode con compatibilidad con CRT. |
Los siguientes tipos de cadena están disponibles en proyectos donde ATL_CSTRING_NO_CRT se define:
| Tipo CStringT | Declaración |
|---|---|
CAtlStringA |
Cadena de tipo de carácter ANSI sin compatibilidad con CRT. |
CAtlStringW |
Cadena de tipo de carácter Unicode sin compatibilidad con CRT. |
CAtlString |
Tipos de caracteres ANSI y Unicode sin compatibilidad con CRT. |
Los siguientes tipos de cadena están disponibles en proyectos ATL_CSTRING_NO_CRT en los que no está definido:
| Tipo CStringT | Declaración |
|---|---|
CAtlStringA |
Cadena de tipo de carácter ANSI compatible con CRT. |
CAtlStringW |
Cadena de tipo de carácter Unicode compatible con CRT. |
CAtlString |
Tipos de caracteres ANSI y Unicode con compatibilidad con CRT. |
CString Los objetos también tienen las siguientes características:
CStringTLos objetos pueden crecer debido a operaciones de concatenación.CStringTLos objetos siguen la "semántica de valores". Piense en unCStringTobjeto como una cadena real, no como un puntero a una cadena.Puede sustituir libremente objetos
CStringTporPCXSTRargumentos de función.Administración de memoria personalizada para búferes de cadena. Para obtener más información, vea Administración de memoria y .
Tipos predefinidos de CStringT
Dado que usa un argumento de plantilla para definir el tipo de carácter (o ) admitido, los tipos de parámetro de método CStringTwchar_t pueden ser char complicados en ocasiones. Para simplificar este problema, se define y se usa un conjunto de tipos predefinidos en toda la CStringT clase. En la tabla siguiente se enumeran los distintos tipos:
| Nombre | Descripción |
|---|---|
XCHAR |
Un solo carácter (o wchar_t ) con el mismo tipo de carácter que el objeto charCStringT . |
YCHAR |
Un solo carácter (o wchar_t ) con el tipo de carácter opuesto como charCStringT objeto. |
PXSTR |
Puntero a una cadena de caracteres (o wchar_t ) con el mismo tipo de carácter que el objeto charCStringT . |
PYSTR |
Puntero a una cadena de caracteres (o wchar_t ) con el tipo de carácter opuesto como charCStringT objeto. |
PCXSTR |
Puntero a una const cadena de caracteres (o ) con wchar_t el mismo tipo de carácter que el objeto charCStringT . |
PCYSTR |
Puntero a una const cadena de caracteres (o ) con wchar_t el tipo de carácter opuesto como charCStringT objeto. |
Nota:
El código que anteriormente usaba métodos no documentados de (como ) debe reemplazarse por código que use los siguientes métodos documentados CStringAssignCopy de CStringT (como o GetBufferReleaseBuffer ). Estos métodos se heredan de CSimpleStringT .
Jerarquía de herencia
CStringT
Requisitos
| Encabezado | Se usa para |
|---|---|
cstringt.h |
Objetos de cadena solo mfc |
atlstr.h |
Objetos de cadena que no son MFC |
CStringT::AllocSysString
Asigna una cadena compatible con Automation del tipo y copia el contenido del objeto en él, incluido el BSTRCStringT carácter nulo final.
BSTR AllocSysString() const;
Valor devuelto
Cadena recién asignada.
Comentarios
En los programas MFC, se produce una clase si no existe memoria suficiente. En los programas ATL, CAtlException se produce una excepción . Esta función se usa normalmente para devolver cadenas para Automation.
Normalmente, si esta cadena se pasa a una función COM como parámetro, esto requiere que el autor de [in] la llamada libre la cadena. Esto se puede hacer mediante SysFreeString , como se describe en el SDK Windows. Para obtener más información, vea Asignación y liberación de memoria para .
Para obtener más información sobre las funciones de asignación OLE Windows, consulte SysAllocString en el SDK Windows.
Ejemplo
El siguiente ejemplo muestra el uso de CStringT::AllocSysString.
// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString str(_T("This is a test string!"));
BSTR bstr = str.AllocSysString();
// bstr now contains "This is a test string!", and can be
// passed to any OLE function requiring a BSTR.
// Normally, if you pass the BSTR, you will
// need to free the string after returning from the function call.
CStringT::AnsiToOem
Convierte todos los caracteres de este objeto del juego de caracteres CStringT ANSI al juego de caracteres OEM.
void AnsiToOem();
Comentarios
La función no está disponible si _UNICODE está definida.
Ejemplo
// OEM character 252 on most IBM-compatible computers in
// Western countries/regions is superscript n, as in 2^n.
// Converting it to the ANSI English charset results in a
// normal character 'n', which is the closest possible
// representation.
CStringT<char, StrTraitATL<char, ChTraitsCRT<char>>> str((WCHAR)252);
str.OemToAnsi();
ASSERT(str[0] == 'n');
// Be aware that in OEM to ANSI conversion the 'n'
// from the previous result cannot be converted back to
// a supsercript n because the system does not know what
// the character's value truly was.
str.AnsiToOem();
ASSERT(str[0] != 252);
ASSERT(str[0] == 'n');
CStringT::AppendFormat
Anexa datos con formato a un objeto CStringT existente.
void __cdecl AppendFormat(PCXSTR pszFormat, [, argument] ...);
void __cdecl AppendFormat(UINT nFormatID, [, argument] ...);
Parámetros
pszFormat
Cadena de control de formato.
nFormatID
Identificador de recurso de cadena que contiene la cadena de control de formato.
argument
Argumentos opcionales.
Comentarios
Esta función da formato y anexa una serie de caracteres y valores en CStringT . Cada argumento opcional (si existe) se convierte y anexa según la especificación de formato correspondiente en o desde el recurso de pszFormat cadena identificado por nFormatID .
Ejemplo
// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString str = _T("Some data:\t");
str.AppendFormat(_T("X value = %.2f\n"), 12345.12345);
_tprintf_s(_T("%s"), (LPCTSTR) str);
CStringT::Collate
Compara dos cadenas mediante la función de texto genérico _tcscoll .
int Collate(PCXSTR psz) const throw();
Parámetros
psz
La otra cadena usada para la comparación.
Valor devuelto
Cero si las cadenas son idénticas, 0 si este objeto es menor que , o 0 si < este objeto es mayor que CStringTpsz>CStringTpsz .
Comentarios
La función de texto genérico , que se define en , se asigna a , o , en función del juego de caracteres definido _tcscollTCHAR.H en tiempo de strcollwcscoll_mbscoll compilación. Cada función realiza una comparación entre mayúsculas y minúsculas de las cadenas según la página de códigos actualmente en uso. Para obtener más información, vea , , , wcscoll , _mbscoll , _strcoll_l_wcscoll_l _mbscoll_l.
CStringT::CollateNoCase
Compara dos cadenas mediante la función de texto genérico _tcscoll .
int CollateNoCase(PCXSTR psz) const throw();
Parámetros
psz
La otra cadena usada para la comparación.
Valor devuelto
Cero si las cadenas son idénticas (omitiendo case), 0 si este objeto es menor que (omitiendo case) o 0 si este objeto es mayor que <CStringTpsz>CStringTpsz (omitiendo case).
Comentarios
La función de texto genérico , que se define en , se asigna a , o , en función del juego de caracteres definido _tcscollTCHAR.H en tiempo de stricollwcsicoll_mbsicoll compilación. Cada función realiza una comparación sin diferenciar mayúsculas de minúsculas de las cadenas, según la página de códigos actualmente en uso. Para obtener más información, vea , , , wcscoll , _mbscoll , _strcoll_l_wcscoll_l . _mbscoll_l
Ejemplo
// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString str1 = _T("Co-Op");
CAtlString str2 = _T("con");
int n;
// Collation uses language rules, such as ignoring dashes.
// NoCase version ignores case.
n = str1.CollateNoCase(str2);
ASSERT(n < 0);
// Comparison is a strict ASCII comparison with no language rules
// but still ignores case in NoCase version.
n = str1.CompareNoCase(str2);
ASSERT(n < 0);
CStringT::Compare
Compara dos cadenas (distingue mayúsculas de minúsculas).
int Compare(PCXSTR psz) const;
Parámetros
psz
La otra cadena usada para la comparación.
Valor devuelto
Cero si las cadenas son idénticas, 0 si este objeto es menor que , o 0 si < este objeto es mayor que CStringTpsz>CStringTpsz .
Comentarios
La función de texto genérico , que se define en , se asigna a , o , en función del juego de caracteres definido _tcscmpTCHAR.H en tiempo de strcmpwcscmp_mbscmp compilación. Cada función realiza una comparación entre mayúsculas y minúsculas de las cadenas y no se ve afectada por la configuración regional. Para obtener más información, vea , wcscmp , _mbscmp.
Si la cadena contiene valores NULL incrustados, para fines de comparación, la cadena se considera truncada en el primer carácter nulo incrustado.
Ejemplo
El siguiente ejemplo muestra el uso de CStringT::Compare.
// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString s1(_T("abc"));
CAtlString s2(_T("abd"));
ASSERT(s1.Compare(s2) < 0); // Compare with another CAtlString.
ASSERT(s1.Compare(_T("abe")) < 0); // Compare with LPTSTR string.
CStringT::CompareNoCase
Compara dos cadenas (sin diferenciar mayúsculas de minúsculas).
int CompareNoCase(PCXSTR psz) const throw();
Parámetros
psz
La otra cadena usada para la comparación.
Valor devuelto
Cero si las cadenas son idénticas (omitiendo case), 0 si este objeto es menor que (omitiendo case) o 0 si este objeto es mayor que <CStringTpsz>CStringTpsz (omitiendo case).
Comentarios
La función de texto genérico , que se define en , se asigna a , o , en función del juego de caracteres definido _tcsicmpTCHAR.H en tiempo de _stricmp_wcsicmp_mbsicmp compilación. Cada función realiza una comparación sin diferenciar mayúsculas de minúsculas de las cadenas. La comparación depende del LC_CTYPE aspecto de la configuración regional, pero no de LC_COLLATE . Para obtener más información, vea , , , _wcsicmp , _mbsicmp , _stricmp_l_wcsicmp_l . _mbsicmp_l
Ejemplo
// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString s1(_T("abc"));
CAtlString s2(_T("ABD"));
ASSERT(s1.CompareNoCase(s2) < 0); // Compare with a CAtlString.
ASSERT(s1.CompareNoCase(_T("ABE")) < 0); // Compare with LPTSTR string.
CStringT::CStringT
Construye un objeto CStringT.
CStringT() throw() :
CThisSimpleString(StringTraits::GetDefaultManager());
explicit CStringT(IAtlStringMgr* pStringMgr) throw() :
CThisSimpleString( pStringMgr);
CStringT(const VARIANT& varSrc);
CStringT(const VARIANT& varSrc, IAtlStringMgr* pStringMgr);
CStringT(const CStringT& strSrc) :
CThisSimpleString( strSrc);
operator CSimpleStringT<
BaseType,
!_CSTRING_IMPL_::_MFCDLLTraitsCheck<BaseType, StringTraits>
:: c_bIsMFCDLLTraits> &()
template <bool bMFCDLL>
CStringT(const CSimpleStringT<BaseType, bMFCDLL>& strSrc) :
CThisSimpleString( strSrc);
template <class SystemString>
CStringT(SystemString^ pString) :
CThisSimpleString( StringTraits::GetDefaultManager());
CStringT(const XCHAR* pszSrc) :
CThisSimpleString( StringTraits::GetDefaultManager());
CSTRING_EXPLICIT CStringT(const YCHAR* pszSrc) :
CThisSimpleString( StringTraits::GetDefaultManager());
CStringT(LPCSTR pszSrc, IAtlStringMgr* pStringMgr) :
CThisSimpleString( pStringMgr);
CStringT(LPCWSTR pszSrc, IAtlStringMgr* pStringMgr) :
CThisSimpleString( pStringMgr);
CSTRING_EXPLICIT CStringT(const unsigned char* pszSrc) :
CThisSimpleString( StringTraits::GetDefaultManager());
/*CSTRING_EXPLICIT*/ CStringT(char* pszSrc) :
CThisSimpleString( StringTraits::GetDefaultManager());
CSTRING_EXPLICIT CStringT(unsigned char* pszSrc) :
CThisSimpleString( StringTraits::GetDefaultManager());
CSTRING_EXPLICIT CStringT(wchar_t* pszSrc) :
CThisSimpleString( StringTraits::GetDefaultManager());
CStringT(const unsigned char* pszSrc, IAtlStringMgr* pStringMgr) :
CThisSimpleString( pStringMgr);
CSTRING_EXPLICIT CStringT(char ch, int nLength = 1) :
CThisSimpleString( StringTraits::GetDefaultManager());
CSTRING_EXPLICIT CStringT(wchar_t ch, int nLength = 1) :
CThisSimpleString( StringTraits::GetDefaultManager());
CStringT(const XCHAR* pch, int nLength) :
CThisSimpleString( pch, nLength, StringTraits::GetDefaultManager());
CStringT(const YCHAR* pch, int nLength) :
CThisSimpleString( StringTraits::GetDefaultManager());
CStringT(const XCHAR* pch, int nLength, AtlStringMgr* pStringMgr) :
CThisSimpleString( pch, nLength, pStringMgr);
CStringT(const YCHAR* pch, int nLength, IAtlStringMgr* pStringMgr) :
CThisSimpleString( pStringMgr);
Parámetros
pch
Puntero a una matriz de caracteres de longitud nLength , no terminada en NULL.
nLength
Recuento del número de caracteres de pch .
ch
Un solo carácter.
pszSrc
Cadena terminada en NULL que se va a copiar en este CStringT objeto.
pStringMgr
Puntero al administrador de memoria para el CStringT objeto . Para obtener más información sobre IAtlStringMgr y la administración de memoria para , vea Administración de memoria con CStringTIAtlStringMgr.
strSrc
Objeto CStringT existente que se va a copiar en este CStringT objeto. Para obtener más información CThisString sobre y , vea la sección CThisSimpleString Comentarios.
varSrc
Objeto variante que se va a copiar en este CStringT objeto.
BaseType
Tipo de carácter de la clase de cadena. Puede ser uno de los siguientes:
char (para cadenas de caracteres ANSI).
wchar_t (para cadenas de caracteres Unicode).
TCHAR (para cadenas de caracteres ANSI y Unicode).
bMFCDLL
Valor booleano que especifica si el proyecto es un archivo DLL de MFC ( TRUE ) o no ( FALSE ).
SystemString
Debe ser System::String y el proyecto debe compilarse con /clr .
pString
Identificador de un CStringT objeto .
Comentarios
Dado que los constructores copian los datos de entrada en un nuevo almacenamiento asignado, pueden producirse excepciones de memoria. Algunos de estos constructores actúan como funciones de conversión. Esto le permite sustituir, por ejemplo, un LPTSTR objeto donde se espera un objeto CStringT .
CStringT(LPCSTRlpsz): construye un Unicode a partir deCStringTuna cadena ANSI. También puede usar este constructor para cargar un recurso de cadena como se muestra en el ejemplo siguiente.CStringT(LPCWSTRlpsz): construye a partirCStringTde una cadena Unicode.CStringT(const unsigned char*psz): permite construir a partir de unCStringTpuntero aunsigned char.
Nota:
Defina la _CSTRING_DISABLE_NARROW_WIDE_CONVERSION macro para desactivar la conversión implícita de cadenas entre cadenas ANSI y Unicode. La macro excluye de los constructores de compilación que admiten la conversión.
El strSrc parámetro puede ser un objeto o CStringTCThisSimpleString . Para CStringT , use una de sus instancias predeterminadas ( , o ); para CString , use un puntero CStringACStringWCThisSimpleStringthis . CThisSimpleStringdeclara una instancia de la CThisSimpleString, que es una clase de cadena más pequeña con menos funcionalidad integrada que la CStringT clase .
El operador de CSimpleStringT<>&() sobrecarga construye un objeto a partir de una CStringTCSimpleStringT declaración.
Nota:
Aunque es posible crear instancias CStringT que contengan caracteres NULL incrustados, se recomienda usar en él. Llamar a métodos y operadores CStringT en objetos que contienen caracteres null incrustados puede producir resultados no deseados.
Ejemplo
// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString s1; // Empty string
CAtlString s2(_T("cat")); // From a C string literal
CAtlString s3 = s2; // Copy constructor
CAtlString s4(s2 + _T(" ") + s3); // From a string expression
CAtlString s5(_T('x')); // s5 = "x"
CAtlString s6(_T('x'), 6); // s6 = "xxxxxx"
CAtlString s7((LPCSTR)ID_FILE_NEW); // s7 = "Create a new document"
VARIANT var;
V_VT(&var) = VT_BSTR;
V_BSTR(&var) = ::SysAllocString(L"Football is a fun sport.");
CAtlString s8(var); // s8 = "Football is a fun sport."
// The following statement does not call the assignment operator.
// The compiler considers the following statement equivalent to
// CAtlString city("Paris")
CAtlString city = _T("Paris");
CStringT::~CStringT
Destruye el objeto CStringT.
~CStringT() throw();
Comentarios
Destruye el objeto CStringT.
CStringT::Delete
Elimina un carácter o caracteres de una cadena empezando por el carácter en el índice especificado.
int Delete(int iIndex, int nCount = 1);
Parámetros
iIndex
Índice de base cero del primer carácter del CStringT objeto que se eliminará.
nCount
Número de caracteres que se quitarán.
Valor devuelto
Longitud de la cadena modificada.
Comentarios
Si nCount es mayor que la cadena, se quitará el resto de la cadena.
Ejemplo
// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString str(_T("Soccer is best, but hockey is quicker!"));
_tprintf_s(_T("Before: %s\n"), (LPCTSTR)str);
int n = str.Delete(6, 3);
_tprintf_s(_T("After: %s\n"), (LPCTSTR)str);
ASSERT(n == str.GetLength());
Before: Soccer is best,
but hockey is quicker!
After: Soccer best,
but hockey is quicker!
CStringT::Find
Busca en esta cadena la primera coincidencia de un carácter o subcadena.
int Find(PCXSTR pszSub, int iStart=0) const throw();
int Find(XCHAR ch, int iStart=0) const throw();
Parámetros
pszSub
Subcadena que se buscará.
iStart
Índice del carácter de la cadena con el que se inicia la búsqueda, o 0 para comenzar desde el principio.
ch
Un carácter único que se buscará.
Valor devuelto
Índice de base cero del primer carácter de este objeto que coincide con la subcadena o los caracteres solicitados; -1 si no se encuentra la CStringT subcadena o el carácter.
Comentarios
La función se sobrecarga para aceptar caracteres únicos (similares a la función en tiempo de ejecución) y strchr cadenas (similares a strstr ).
Ejemplo
// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString s(_T("abcdef"));
ASSERT(s.Find(_T('c')) == 2);
ASSERT(s.Find(_T("de")) == 3);
CAtlString str(_T("The waves are still"));
int n = str.Find(_T('e'), 5);
ASSERT(n == 7);
CStringT::FindOneOf
Busca en esta cadena el primer carácter que coincida con cualquier carácter contenido en pszCharSet .
int FindOneOf(PCXSTR pszCharSet) const throw();
Parámetros
pszCharSet
Cadena que contiene caracteres para la coincidencia.
Valor devuelto
Índice de base cero del primer carácter de esta cadena que también está en pszCharSet ; -1 si no hay ninguna coincidencia.
Comentarios
Busca la primera aparición de cualquiera de los caracteres de pszCharSet .
Ejemplo
// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString s(_T("abcdef"));
ASSERT(s.FindOneOf(_T("xd")) == 3); // 'd' is first match
CStringT::Format
Escribe datos con formato en de la misma manera CStringT que da formato a los datos en una sprintf_s matriz de caracteres de estilo C.
void __cdecl Format(UINT nFormatID, [, argument]...);
void __cdecl Format(PCXSTR pszFormat, [, argument] ...);
Parámetros
nFormatID
Identificador de recurso de cadena que contiene la cadena de control de formato.
pszFormat
Cadena de control de formato.
argument
Argumentos opcionales.
Comentarios
Esta función da formato y almacena una serie de caracteres y valores en CStringT . Cada argumento opcional (si existe) se convierte y se genera según la especificación de formato correspondiente en o desde el recurso de pszFormat cadena identificado por nFormatID .
Se producirá un error en la llamada si el propio objeto de cadena se ofrece como parámetro a Format . Por ejemplo, el código siguiente provocará resultados impredecibles:
CAtlString str = _T("Some Data");
str.Format(_T("%s%d"), str, 123);
// Attention: str is also used in the parameter list.
Para obtener más información, vea Sintaxis de especificación de formato: y wprintf Funciones.
Ejemplo
// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString str;
str.Format(_T("Floating point: %.2f\n"), 12345.12345);
_tprintf_s(_T("%s"), (LPCTSTR) str);
str.Format(_T("Left-justified integer: %.6d\n"), 35);
_tprintf_s(_T("%s"), (LPCTSTR) str);
CStringT::FormatMessage
Da formato a una cadena de mensaje.
void __cdecl FormatMessage(UINT nFormatID, [, argument]...);
void __cdecl FormatMessage(PCXSTR pszFormat, [, argument]...);
Parámetros
nFormatID
Identificador de recurso de cadena que contiene el texto del mensaje sin formato.
pszFormat
Apunta a la cadena de control de formato. Se examinará en busca de inserciones y se le dará formato en consecuencia. La cadena de formato es similar a las cadenas de formato de estilo de función en tiempo de ejecución, salvo que permite insertar los parámetros printf en un orden arbitrario.
argument
Argumentos opcionales.
Comentarios
La función requiere una definición de mensaje como entrada. La definición del mensaje viene determinada por pszFormat o desde el recurso de cadena identificado por nFormatID . La función copia el texto del mensaje con formato en el objeto y procesa las secuencias de CStringT inserción incrustadas si se solicita.
Nota:
FormatMessage intenta asignar memoria del sistema para la cadena recién formatada. Si se produce un error en este intento, se produce automáticamente una excepción de memoria.
Cada inserción debe tener un parámetro correspondiente después del pszFormat parámetro nFormatID o . Dentro del texto del mensaje, se admiten varias secuencias de escape para dar formato dinámicamente al mensaje. Para más información, consulte la función Windows FormatMessage en el SDK de Windows.
Ejemplo
// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString str;
int nAsked = 5;
int nAgree = 4;
str.FormatMessage(_T("%1!d! of %2!d! writers agree: Soccer is %3%!"),
nAgree, nAsked, _T("Best"));
ASSERT(str == _T("4 of 5 writers agree: Soccer is Best!"));
CStringT::FormatMessageV
Da formato a una cadena de mensaje mediante una lista de argumentos de variable.
void FormatMessageV(PCXSTR pszFormat, va_list* pArgList);
Parámetros
pszFormat
Apunta a la cadena de control de formato. Se examinará en busca de inserciones y se le dará formato en consecuencia. La cadena de formato es similar a las cadenas de formato de estilo de función en tiempo de ejecución, salvo que permite insertar los parámetros printf en un orden arbitrario.
pArgList
Puntero a una lista de argumentos.
Comentarios
La función requiere una definición de mensaje como entrada, determinada por pszFormat . La función copia el texto del mensaje con formato y una lista variable de argumentos en el objeto, procesando las secuencias de inserción CStringT insertadas si se solicitan.
Nota:
FormatMessageV llama CStringT::FormatMessage a , que intenta asignar memoria del sistema para la cadena recién formatada. Si se produce un error en este intento, se produce automáticamente una excepción de memoria.
Para más información, consulte la función Windows FormatMessage en el SDK de Windows.
CStringT::FormatV
Da formato a una cadena de mensaje mediante una lista de argumentos de variable.
void FormatV(PCXSTR pszFormat, va_list args);
Parámetros
pszFormat
Apunta a la cadena de control de formato. Se examinará en busca de inserciones y se le dará formato en consecuencia. La cadena de formato es similar a las cadenas de formato de estilo de función en tiempo de ejecución, salvo que permite insertar los parámetros printf en un orden arbitrario.
args
Puntero a una lista de argumentos.
Comentarios
Escribe una cadena con formato y una lista de variables de argumentos en una cadena de la misma manera que da formato a los datos en una matriz de caracteres CStringTvsprintf_s de estilo C.
Ejemplo
void WriteString(LPCTSTR pstrFormat, ...)
{
CString str;
// format and write the data you were given
va_list args;
va_start(args, pstrFormat);
str.FormatV(pstrFormat, args);
va_end(args);
_tprintf_s(str);
return;
}
// Call the above WriteString function.
WriteString(_T("%d error(s) found in %d line(s)"), 10, 1351);
CStringT::GetEnvironmentVariable
Establece la cadena en el valor de la variable de entorno especificada.
BOOL GetEnvironmentVariable(PCXSTR pszVar);
Parámetros
pszVar
Puntero a una cadena terminada en NULL que especifica la variable de entorno.
Valor devuelto
Si es correcta, su valor es distinto de cero. En caso contrario, es cero.
Comentarios
Recupera el valor de la variable especificada del bloque de entorno del proceso de llamada. El valor tiene el formato de una cadena de caracteres terminada en null.
Ejemplo
// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString EnvStr;
EnvStr.GetEnvironmentVariable(_T("TEMP"));
_tprintf_s(_T("Current value of TEMP variable: %s\n"), EnvStr);
CStringT::Insert
Inserta un solo carácter o una subcadena en el índice especificado dentro de la cadena.
int Insert(int iIndex, PCXSTR psz);
int Insert(int iIndex, XCHAR ch);
Parámetros
iIndex
Índice del carácter antes del cual tendrá lugar la inserción.
psz
Puntero a la subcadena que se va a insertar.
ch
Carácter que se va a insertar.
Valor devuelto
Longitud de la cadena modificada.
Comentarios
El parámetro identifica el primer carácter que se va a iIndex mover para hacer espacio para el carácter o la subcadena. Si nIndex es cero, la inserción se producirá antes de toda la cadena. Si nIndex es mayor que la longitud de la cadena, la función concatenará la cadena actual y el nuevo material proporcionado por o psz .
Ejemplo
// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString str(_T("SoccerBest"));
int n = str.Insert(6, _T("is "));
ASSERT(n == str.GetLength());
_tprintf_s(_T("1: %s\n"), (LPCTSTR) str);
n = str.Insert(6, _T(' '));
ASSERT(n == str.GetLength());
_tprintf_s(_T("2: %s\n"), (LPCTSTR) str);
n = str.Insert(55, _T('!'));
ASSERT(n == str.GetLength());
_tprintf_s(_T("3: %s\n"), (LPCTSTR) str);
CStringT::Left
Extrae los caracteres situados más a nCount la izquierda de este objeto y devuelve una copia de la CStringT subcadena extraída.
CStringT Left(int nCount) const;
Parámetros
nCount
Número de caracteres que se va a extraer de este objeto CStringT.
Valor devuelto
El objeto CStringT que contiene una copia del rango de caracteres especificado. El objeto CStringT devuelto puede estar vacío.
Comentarios
Si nCount supera la longitud de la cadena, se extrae toda la cadena. Left es similar a la función Left de Basic.
En el caso de los juegos de caracteres de varios bytes (MBCS), trata cada secuencia de 8 bits como un carácter, de modo que devuelve el número de caracteres de varios bytes multiplicado nCountnCount por dos.
Ejemplo
// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString s(_T("abcdef"));
ASSERT(s.Left(2) == _T("ab"));
CStringT::LoadString
Lee un recurso Windows cadena, identificado por nID,en un objeto existente.
BOOL LoadString(HINSTANCE hInstance, UINT nID, WORD wLanguageID);
BOOL LoadString(HINSTANCE hInstance, UINT nID);
BOOL LoadString(UINT nID);
Parámetros
hInstance
Identificador de la instancia del módulo.
nID
Un Windows de recurso de cadena.
wLanguageID
Idioma del recurso de cadena.
Valor devuelto
Distinto de cero si la carga de recursos se ha realizado correctamente; de lo contrario, 0.
Comentarios
Carga el recurso de cadena ( nID ) del módulo especificado ( ) mediante el lenguaje especificado ( hInstancewLanguage ).
Ejemplo
// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString s;
s.LoadString(IDS_APP_TITLE);
CStringT::MakeLower
Convierte el objeto CStringT en una cadena en minúsculas.
CStringT& MakeLower();
Valor devuelto
Cadena en minúscula resultante.
Ejemplo
// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString s(_T("ABC"));
ASSERT(s.MakeLower() == _T("abc"));
CStringT::MakeReverse
Invierte el orden de los caracteres del CStringT objeto .
CStringT& MakeReverse();
Valor devuelto
Cadena invertida resultante.
Ejemplo
// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString s(_T("abc"));
ASSERT(s.MakeReverse() == _T("cba"));
CStringT::MakeUpper
Convierte el objeto CStringT en una cadena en mayúsculas.
CStringT& MakeUpper();
Valor devuelto
Cadena en mayúscula resultante.
Comentarios
Ejemplo
// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString s(_T("abc"));
ASSERT(s.MakeUpper() == _T("ABC"));
CStringT::Mid
Extrae una subcadena de caracteres de nCount longitud de este CStringT objeto, empezando por la posición iFirst (de base cero).
CStringT Mid(int iFirst, int nCount) const;
CStringT Mid(int iFirst) const;
Parámetros
iFirst
Índice de base cero del primer carácter de este objeto que se va a incluir CStringT en la subcadena extraída.
nCount
Número de caracteres que se va a extraer de este objeto CStringT. Si no se proporciona este parámetro, se extrae el resto de la cadena.
Valor devuelto
El objeto CStringT que contiene una copia del rango de caracteres especificado. El objeto CStringT devuelto puede estar vacío.
Comentarios
La función devuelve una copia de la subcadena extraída. Mid es similar a la función Basic Mid (excepto que los índices de Basic se basan en uno).
En el caso de los juegos de caracteres multibyte (MBCS), hace referencia a cada carácter de 8 bits; es decir, un byte inicial y final en un carácter multibyte se cuentan nCount como dos caracteres.
Ejemplo
// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString s(_T("abcdef"));
ASSERT(s.Mid(2, 3) == _T("cde"));
CStringT::OemToAnsi
Convierte todos los caracteres de este objeto del juego de caracteres CStringT OEM en el juego de caracteres ANSI.
void OemToAnsi();
Comentarios
Esta función no está disponible si _UNICODE está definida.
Ejemplo
Vea el ejemplo de CStringT::AnsiToOem .
CStringT::operator =
Asigna un nuevo valor a la cadena.
CStringT& operator=(const CStringT& strSrc);
template<bool bMFCDLL>
CStringT& operator=(const CSimpleStringT<BaseType, bMFCDLL>& str);
CStringT& operator=(PCXSTR pszSrc);
CStringT& operator=(PCYSTR pszSrc);
CStringT& operator=(const unsigned char* pszSrc);
CStringT& operator=(XCHAR ch);
CStringT& operator=(YCHAR ch);
CStringT& operator=(const VARIANT& var);
Parámetros
strSrc
que CStringT se va a asignar a esta cadena.
str
Referencia a un objeto CThisSimpleString.
bMFCDLL
Valor booleano que especifica si el proyecto es un archivo DLL de MFC o no.
BaseType
Tipo base de cadena.
var
Objeto variant que se va a asignar a esta cadena.
ch
Carácter ANSI o Unicode que se asignará a la cadena.
pszSrc
Puntero a la cadena original que se va a asignar.
Comentarios
El operador de asignación acepta otro CStringT objeto, un puntero de carácter o un solo carácter. Se pueden producir excepciones de memoria cada vez que se usa este operador porque se puede asignar nuevo almacenamiento.
Para obtener información CThisSimpleString sobre , vea la sección Comentarios de CStringT::CStringT .
Nota:
Aunque es posible crear instancias CStringT que contengan caracteres nulos incrustados, se recomienda usar en él. La llamada a métodos y operadores CStringT en objetos que contienen caracteres nulos incrustados puede producir resultados no deseados.
CStringT::operator +
Concatena dos cadenas o un carácter y una cadena.
friend CStringT operator+(const CStringT& str1, const CStringT& str2);
friend CStringT operator+(const CStringT& str1, PCXSTR psz2);
friend CStringT operator+(PCXSTR psz1, const CStringT& str2,);
friend CStringT operator+(char ch1, const CStringT& str2,);
friend CStringT operator+(const CStringT& str1, char ch2);
friend CStringT operator+(const CStringT& str1, wchar_t ch2);
friend CStringT operator+(wchar_t ch1, const CStringT& str2,);
Parámetros
ch1
Carácter ANSI o Unicode que se concatenará con una cadena.
ch2
Carácter ANSI o Unicode que se concatenará con una cadena.
str1
que CStringT se concatena con una cadena o un carácter.
str2
que CStringT se concatena con una cadena o un carácter.
psz1
Puntero a una cadena terminada en NULL para concatenar con una cadena o un carácter.
psz2
Puntero a una cadena que se concatenará con una cadena o un carácter.
Comentarios
Hay siete formas de sobrecarga de la CStringT::operator+ función. La primera versión concatena dos objetos CStringT existentes. Los dos siguientes concatenan un CStringT objeto y una cadena terminada en NULL. Los dos siguientes concatenan un CStringT objeto y un carácter ANSI. Los dos últimos concatenan un CStringT objeto y un carácter Unicode.
Nota:
Aunque es posible crear instancias CStringT que contengan caracteres nulos incrustados, se recomienda usar en él. La llamada a métodos y operadores CStringT en objetos que contienen caracteres nulos incrustados puede producir resultados no deseados.
Ejemplo
// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString s1(_T("dog ")), s2(_T(" awake")), s3; // Empty CAtlString objects
s1= _T("The ") + s1;
s3= s1 + _T('i');
s3= s3 + _T('s');
s3= s3 + s2;
ASSERT(s3 == _T("The dog is awake"));
CStringT::operator +=
Concatena los caracteres al final de la cadena.
CStringT& operator+=(const CThisSimpleString& str);
template<bool bMFCDLL>
CStringT& operator+=(const const CSimpleStringT<BaseType, bMFCDLL>& str);
template<int t_nSize>
CStringT& operator+=(const CStaticString<XCHAR, t_nSize>& strSrc);
CStringT& operator+=(PCXSTR pszSrc);
CStringT& operator+=(PCYSTR pszSrc);
CStringT& operator+=(char ch);
CStringT& operator+=(unsigned char ch);
CStringT& operator+=(wchar_t ch);
CStringT& operator+=(const VARIANT& var);
Parámetros
str
Referencia a un objeto CThisSimpleString.
bMFCDLL
Valor booleano que especifica si el proyecto es un archivo DLL de MFC o no.
BaseType
Tipo base de cadena.
var
Objeto variant que se va a concatenar a esta cadena.
ch
Carácter ANSI o Unicode que se concatenará con una cadena.
pszSrc
Puntero a la cadena original que se va a concatenar.
strSrc
que CStringT se va a concatenar a esta cadena.
Comentarios
El operador acepta otro CStringT objeto, un puntero de carácter o un solo carácter. Se pueden producir excepciones de memoria cada vez que se usa este operador de concatenación porque se puede asignar nuevo almacenamiento para los caracteres agregados a este CStringT objeto.
Para obtener información CThisSimpleString sobre , vea la sección Comentarios de CStringT::CStringT .
Nota:
Aunque es posible crear instancias CStringT que contengan caracteres nulos incrustados, se recomienda usar en él. La llamada a métodos y operadores CStringT en objetos que contienen caracteres nulos incrustados puede producir resultados no deseados.
Ejemplo
// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString s(_T("abc"));
ASSERT((s += _T("def")) == _T("abcdef"));
CStringT::operator ==
Determina si dos cadenas son lógicamente iguales.
friend bool operator==(const CStringT& str1, const CStringT& str2) throw();
friend bool operator==(const CStringT& str1, PCXSTR psz2) throw();
friend bool operator==(const CStringT& str1, PCYSTR psz2) throw();
friend bool operator==(const CStringT& str1, XCHAR ch2) throw();
friend bool operator==(PCXSTR psz1, const CStringT& str2) throw();
friend bool operator==(PCYSTR psz1, const CStringT& str2,) throw();
friend bool operator==(XCHAR ch1, const CStringT& str2,) throw();
Parámetros
ch1
Carácter ANSI o Unicode para la comparación.
ch2
Carácter ANSI o Unicode para la comparación.
str1
para CStringT la comparación.
str2
para CStringT la comparación.
psz1
Puntero a una cadena terminada en NULL para la comparación.
psz2
Puntero a una cadena terminada en NULL para la comparación.
Comentarios
Comprueba si una cadena o un carácter del lado izquierdo es igual a una cadena o un carácter del lado derecho y devuelve TRUE o FALSE en consecuencia.
Ejemplo
// typedef CStringT< TCHAR, StrTraitATL< TCHAR > > CAtlString;
CAtlString s1(_T("dog")), s2(_T("f")), s3(_T("dog"));
ASSERT(s1 == _T("dog"));
ASSERT(s2 == _T('f'));
ASSERT(s1 == s3);
CStringT::operator !=
Determina si dos cadenas no son lógicamente iguales.
friend bool operator!=(const CStringT& str1, const CStringT& str2) throw();
friend bool operator!=(const CStringT& str1, PCXSTR psz2) throw();
friend bool operator!=(const CStringT& str1, PCYSTR psz2) throw();
friend bool operator!=(const CStringT& str1, XCHAR ch2) throw();
friend bool operator!=(PCXSTR psz1, const CStringT& str2) throw();
friend bool operator!=(PCYSTR psz1, const CStringT& str2,) throw();
friend bool operator!=(XCHAR ch1, const CStringT& str2,) throw();
Parámetros
ch1
Carácter ANSI o Unicode que se concatenará con una cadena.
ch2
Carácter ANSI o Unicode que se concatenará con una cadena.
str1
para CStringT la comparación.
str2
para CStringT la comparación.
psz1
Puntero a una cadena terminada en NULL para la comparación.
psz2
Puntero a una cadena terminada en NULL para la comparación.
Comentarios
Comprueba si una cadena o un carácter del lado izquierdo no es igual a una cadena o un carácter del lado derecho.
Ejemplo
// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString s1(_T("cat")), s2(_T("f")), s3(_T("horse"));
ASSERT(s1 != _T("dog"));
ASSERT(s2 != _T('t'));
ASSERT(s1 != s2);
CStringT::operator <
Determina si la cadena del lado izquierdo del operador es menor que la cadena del lado derecho.
friend bool operator<(const CStringT& str1, const CStringT& str2) throw();
friend bool operator<(const CStringT& str1, PCXSTR psz2) throw();
friend bool operator<(PCXSTR psz1, const CStringT& str2) throw();
Parámetros
str1
para CStringT la comparación.
str2
para CStringT la comparación.
psz1
Puntero a una cadena terminada en NULL para la comparación.
psz2
Puntero a una cadena terminada en NULL para la comparación.
Comentarios
Una comparación lexicográfica entre cadenas, carácter por carácter hasta:
Encuentra dos caracteres correspondientes distintos y el resultado de la comparación se toma como el resultado de la comparación entre las cadenas.
No encuentra ninguna desigualdad, pero una cadena tiene más caracteres que la otra y la cadena más corta se considera menor que la cadena más larga.
No encuentra ninguna desigualdad y encuentra que las cadenas tienen el mismo número de caracteres, por lo que las cadenas son iguales.
Ejemplo
// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString s1(_T("cat")), s2(_T("cats")), s3(_T("dogs"));
ASSERT(s1 < _T("dog"));
ASSERT(s1 < _T("cats"));
ASSERT(s2 < _T("cats and dogs"));
ASSERT(s2 < s3);
CStringT::operator >
Determina si la cadena del lado izquierdo del operador es mayor que la cadena del lado derecho.
friend bool operator>(const CStringT& str1, const CStringT& str2) throw();
friend bool operator>(const CStringT& str1, PCXSTR psz2) throw();
friend bool operator>(PCXSTR psz1, const CStringT& str2) throw();
Parámetros
str1
para CStringT la comparación.
str2
para CStringT la comparación.
psz1
Puntero a una cadena terminada en NULL para la comparación.
psz2
Puntero a una cadena terminada en NULL para la comparación.
Comentarios
Una comparación lexicográfica entre cadenas, carácter por carácter hasta:
Encuentra dos caracteres correspondientes distintos y el resultado de la comparación se toma como el resultado de la comparación entre las cadenas.
No encuentra ninguna desigualdad, pero una cadena tiene más caracteres que la otra y la cadena más corta se considera menor que la cadena más larga.
No encuentra ninguna desigualdad y encuentra que las cadenas tienen el mismo número de caracteres, por lo que las cadenas son iguales.
Ejemplo
// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString s1(_T("cat")), s2(_T("cats")), s3(_T("dogs"));
ASSERT(_T("dog") > s1);
ASSERT(_T("cats") > s1);
ASSERT(_T("cats and dogs") > s2);
ASSERT(s3 > s2);
CStringT::operator <=
Determina si la cadena del lado izquierdo del operador es menor o igual que la cadena del lado derecho.
friend bool operator<=(const CStringT& str1, const CStringT& str2) throw();
friend bool operator<=(const CStringT& str1, PCXSTR psz2) throw();
friend bool operator<=(PCXSTR psz1, const CStringT& str2) throw();
Parámetros
str1
para CStringT la comparación.
str2
para CStringT la comparación.
psz1
Puntero a una cadena terminada en NULL para la comparación.
psz2
Puntero a una cadena terminada en NULL para la comparación.
Comentarios
Una comparación lexicográfica entre cadenas, carácter por carácter hasta:
Encuentra dos caracteres correspondientes distintos y el resultado de la comparación se toma como el resultado de la comparación entre las cadenas.
No encuentra ninguna desigualdad, pero una cadena tiene más caracteres que la otra y la cadena más corta se considera menor que la cadena más larga.
No encuentra ninguna desigualdad y encuentra que las cadenas tienen el mismo número de caracteres, por lo que las cadenas son iguales.
Ejemplo
// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString s1(_T("cat")), s2(_T("cats")), s3(_T("dogs"));
ASSERT(s1 <= _T("dog"));
ASSERT(s1 <= _T("cat"));
ASSERT(s3 <= _T("dogs and cats"));
ASSERT(s2 <= s3);
CStringT::operator >=
Determina si la cadena del lado izquierdo del operador es mayor o igual que la cadena del lado derecho.
friend bool operator>=(const CStringT& str1, const CStringT& str2) throw();
friend bool operator>=(const CStringT& str1, PCXSTR psz2) throw();
friend bool operator>=(PCXSTR psz1, const CStringT& str2) throw();
Parámetros
str1
para CStringT la comparación.
str2
para CStringT la comparación.
psz1
Puntero a una cadena para la comparación.
psz2
Puntero a una cadena para la comparación.
Comentarios
Una comparación lexicográfica entre cadenas, carácter por carácter hasta:
Encuentra dos caracteres correspondientes distintos y el resultado de la comparación se toma como el resultado de la comparación entre las cadenas.
No encuentra ninguna desigualdad, pero una cadena tiene más caracteres que la otra y la cadena más corta se considera menor que la cadena más larga.
No encuentra ninguna desigualdad y encuentra que las cadenas tienen el mismo número de caracteres, por lo que las cadenas son iguales.
Ejemplo
// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString s1(_T("cat")), s2(_T("cats")), s3(_T("dogs"));
ASSERT(_T("dog") >= s1);
ASSERT(_T("cats and dogs") >= s2);
ASSERT(s3 >= s2);
CStringT::Remove
Quita todas las instancias del carácter especificado de la cadena.
int Remove(XCHAR chRemove);
Parámetros
chRemove
Carácter que se va a quitar de una cadena.
Valor devuelto
Recuento de caracteres quitados de la cadena. Cero si la cadena no cambia.
Comentarios
Las comparaciones del carácter distinguen mayúsculas de minúsculas.
Ejemplo
// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString str(_T("This is a test."));
int n = str.Remove(_T('t'));
ASSERT(n == 2);
ASSERT(str == _T("This is a es."));
CStringT::Replace
Hay dos versiones de Replace . La primera versión reemplaza una o varias copias de una subcadena mediante otra subcadena. Ambas subcadenas finalizan en NULL. La segunda versión reemplaza una o varias copias de un carácter mediante otro carácter. Ambas versiones funcionan con los datos de caracteres almacenados en CStringT .
int Replace(PCXSTR pszOld, PCXSTR pszNew);
int Replace(XCHAR chOld, XCHAR chNew);
Parámetros
pszOld
Puntero a una cadena terminada en NULL que se va a reemplazar por pszNew .
pszNew
Puntero a una cadena terminada en NULL que reemplaza pszOld a .
chOld
Carácter que se va a reemplazar por chNew .
chNew
Carácter que reemplaza chOld a .
Valor devuelto
Devuelve el número de instancias reemplazadas del carácter o subcadena, o cero si la cadena no cambia.
Comentarios
Replace puede cambiar la longitud de la cadena porque y no tienen que tener la misma longitud, y se pueden cambiar varias copias de la subcadena anterior pszNewpszOld a la nueva. La función hace una coincidencia que distingue mayúsculas de minúsculas.
Algunos ejemplos CStringT de instancias son , y CStringCStringACStringW .
Para CStringA , funciona con caracteres ANSI o Replace multibyte (MBCS). Para CStringW , funciona con caracteres Replace anchos.
Para , el tipo de datos de caracteres se selecciona en tiempo de compilación, en función de si se definen las constantes de CString la tabla siguiente.
| Constante definida | Tipo de datos de caracteres |
|---|---|
_UNICODE |
Caracteres anchos |
_MBCS |
Caracteres de varios bytes |
| Neither | Caracteres de un solo byte |
| Ambos | No definido |
Ejemplo
// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString strBang(_T("Everybody likes epee fencing"));
int n = strBang.Replace(_T("epee"), _T("foil"));
ASSERT(n == 1);
CStringT::ReverseFind
Busca en CStringT este objeto la última coincidencia de un carácter.
int ReverseFind(XCHAR ch) const throw();
Parámetros
ch
Carácter que se buscará.
Valor devuelto
Índice de base cero del último carácter de este objeto que coincide con el carácter solicitado, o -1 si no se encuentra CStringT el carácter.
Comentarios
La función es similar a la función en tiempo de ejecución strrchr .
Ejemplo
// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString s(_T("abcabc"));
ASSERT(s.ReverseFind(_T('b')) == 4);
CStringT::Right
Extrae los últimos caracteres (es decir, más a la derecha) de este objeto y nCount devuelve una copia de la CStringT subcadena extraída.
CStringT Right(int nCount) const;
Parámetros
nCount
Número de caracteres que se va a extraer de este objeto CStringT.
Valor devuelto
El objeto CStringT que contiene una copia del rango de caracteres especificado. El objeto CStringT devuelto puede estar vacío.
Comentarios
Si nCount supera la longitud de la cadena, se extrae toda la cadena. Right es similar a la función Right Basic (excepto en que los índices de Basic están basados en cero).
Para los juegos de caracteres multibyte ( ), hace referencia a cada carácter de 8 bits; es decir, un byte inicial y final en un carácter multibyte se cuentan MBCSnCount como dos caracteres.
Ejemplo
// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString s(_T("abcdef"));
ASSERT(s.Right(2) == _T("ef"));
CStringT::SetSysString
Reallocate el objeto al que apunta y copia en él el contenido del BSTRpbstrCStringT objeto, incluido el NULL carácter .
BSTR SetSysString(BSTR* pbstr) const;
Parámetros
pbstr
Puntero a una cadena de caracteres.
Valor devuelto
La nueva cadena.
Comentarios
Dependiendo del contenido del objeto, el valor del al que hace CStringTBSTR referencia puede pbstr cambiar. La función produce una excepción CMemoryException si no existe memoria suficiente.
Esta función se usa normalmente para cambiar el valor de las cadenas pasadas por referencia para Automation.
Ejemplo
BSTR bstr = ::SysAllocString(L"Golf is fun!");
// create a CAtlString and change the OLE
// string to the contents of the BSTR
// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString str(_T("Soccer is best!"));
BSTR bstr2 = str.SetSysString(&bstr);
// Now, both bstr and bstr2 reference a single instance of
// the "Soccer" string. The "Golf" string has been freed.
ASSERT(bstr2 == bstr);
CStringT::SpanExcluding
Extrae caracteres de la cadena, empezando por el primer carácter, que no están en el conjunto de caracteres identificados por pszCharSet .
CStringT SpanExcluding(PCXSTR pszCharSet) const;
Parámetros
pszCharSet
Cadena interpretada como un conjunto de caracteres.
Valor devuelto
Subcadena que contiene caracteres de la cadena que no están en , empezando por el primer carácter de la cadena y finalizando con el primer carácter encontrado en la cadena que también se encuentra pszCharSet en (es decir, empezando por el primer carácter de la cadena y hasta pero excluyendo el primer carácter de la cadena que se pszCharSetpszCharSet encuentra). Devuelve toda la cadena si no se encuentra ningún pszCharSet carácter en la cadena.
Comentarios
SpanExcluding extrae y devuelve todos los caracteres que preceden a la primera aparición de un carácter de (es decir, el carácter de y todos los caracteres que lo sigue en la pszCharSetpszCharSet cadena, no se devuelven). Si no se encuentra pszCharSet ningún carácter de en la cadena, devuelve toda la SpanExcluding cadena.
Ejemplo
// The string can be delimited by a semicolon(;),
// a comma(,), a period(.), a dash(-),
// or an apostrophe(').
// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString src(_T("World Cup '98"));
_tprintf_s(_T("%s"),src.SpanExcluding(_T(";,.-'")));
CStringT::SpanIncluding
Extrae caracteres de la cadena, empezando por el primer carácter, que se encuentran en el conjunto de caracteres identificados por pszCharSet .
CStringT SpanIncluding(PCXSTR pszCharSet) const;
Parámetros
pszCharSet
Cadena interpretada como un conjunto de caracteres.
Valor devuelto
Subcadena que contiene caracteres en la cadena que se encuentran en , empezando por el primer carácter de la cadena y finalizando cuando se encuentra un carácter en la cadena que no pszCharSet está en pszCharSet . SpanIncluding devuelve una subcadena vacía si el primer carácter de la cadena no está en el conjunto especificado.
Comentarios
Si el primer carácter de la cadena no está en el juego de caracteres, SpanIncluding devuelve una cadena vacía. De lo contrario, devuelve una secuencia de caracteres consecutivos que están en el conjunto.
Ejemplo
// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString str(_T("cabbage"));
CAtlString res = str.SpanIncluding(_T("abc"));
ASSERT(res == _T("cabba"));
res = str.SpanIncluding(_T("xyz"));
ASSERT(res.IsEmpty());
CStringT::Tokenize
Busca el siguiente token en una cadena de destino.
CStringT Tokenize(PCXSTR pszTokens, int& iStart) const;
Parámetros
pszTokens
Cadena que contiene delimitadores de token. El orden de estos delimitadores no es importante.
iStart
Índice de base cero para comenzar la búsqueda.
Valor devuelto
Objeto CStringT que contiene el valor del token actual.
Comentarios
La Tokenize función busca el siguiente token en la cadena de destino. El conjunto de caracteres de pszTokens especifica los posibles delimitadores del token que se va a encontrar. En cada llamada a la función se inicia en , omite los delimitadores iniciales y devuelve un objeto que contiene el token actual, que es la cadena de caracteres hasta el siguiente carácter TokenizeiStartCStringT delimitador. El valor de se actualiza para que sea la posición que sigue al carácter delimitador final o -1 si se alcanza el iStart final de la cadena. Se pueden dividir más tokens del resto de la cadena de destino mediante una serie de llamadas a , mediante para realizar un seguimiento de dónde se va a leer el siguiente token en TokenizeiStart la cadena. Cuando no haya más tokens, la función devolverá una cadena vacía y iStart se establecerá en -1.
A diferencia de las funciones de tokenización de CRT, como , , _strtok_s_l , wcstok_s_wcstok_s_l_mbstok_s , _mbstok_s_l, no Tokenize modifica la cadena de destino.
Ejemplo
// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString str(_T("%First Second#Third"));
CAtlString resToken;
int curPos = 0;
resToken= str.Tokenize(_T("% #"),curPos);
while (resToken != _T(""))
{
_tprintf_s(_T("Resulting token: %s\n"), resToken);
resToken = str.Tokenize(_T("% #"), curPos);
};
La salida de este ejemplo es la siguiente:
Resulting Token: First
Resulting Token: Second
Resulting Token: Third
CStringT::Trim
Recorta los caracteres iniciales y finales de la cadena.
CStringT& Trim(XCHAR chTarget);
CStringT& Trim(PCXSTR pszTargets);
CStringT& Trim();
Parámetros
chTarget
Carácter de destino que se va a recortar.
pszTargets
Puntero a una cadena que contiene los caracteres de destino que se va a recortar. Todas las apariciones iniciales y finales de caracteres en pszTargets se recortarán del CStringT objeto .
Valor devuelto
Devuelve la cadena recortada.
Comentarios
Quita todas las apariciones iniciales y finales de una de las siguientes:
Carácter especificado por
chTarget.Todos los caracteres encontrados en la cadena especificada por
pszTargets.Espacios.
Ejemplo
// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString str;
str = _T("******Soccer is best!?!?!?!?!");
_tprintf_s(_T("Before: \"%s\"\n"), (LPCTSTR)str);
_tprintf_s(_T("After : \"%s\"\n"), (LPCTSTR)str.Trim(_T("?!*")));
// Output:
// --------------------------
// Before: ******Soccer is best!?!?!?!?!
// After: Soccer is best
La salida de este ejemplo es la siguiente:
Before: "******Soccer is best, but liquor is quicker!!!!!"
After : "Soccer is best, but liquor is quicker"
CStringT::TrimLeft
Recorta los caracteres iniciales de la cadena.
CStringT& TrimLeft(XCHAR chTarget);
CStringT& TrimLeft(PCXSTR pszTargets);
CStringT& TrimLeft();
Parámetros
chTarget
Carácter de destino que se va a recortar.
pszTargets
Puntero a una cadena que contiene los caracteres de destino que se va a recortar. Todas las apariciones iniciales de caracteres en pszTargets se recortarán del CStringT objeto .
Valor devuelto
Cadena recortada resultante.
Comentarios
Quita todas las apariciones iniciales y finales de una de las siguientes:
Carácter especificado por
chTarget.Todos los caracteres encontrados en la cadena especificada por
pszTargets.Espacios.
Ejemplo
// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString str;
str = _T("\t\t ****Soccer is best!");
_tprintf_s(_T("Before: \"%s\"\n"), (LPCTSTR)str);
_tprintf_s(_T("After: \"%s\"\n"), (LPCTSTR)str.TrimLeft(_T("\t *")));
// Output:
// --------------------------
// Before: ****Soccer is best!
// After: Soccer is best!
CStringT::TrimRight
Recorta los caracteres finales de la cadena.
CStringT& TrimRight(XCHAR chTarget);
CStringT& TrimRight(PCXSTR pszTargets);
CStringT& TrimRight();
Parámetros
chTarget
Carácter de destino que se va a recortar.
pszTargets
Puntero a una cadena que contiene los caracteres de destino que se va a recortar. Todas las apariciones finales de caracteres en pszTargets se recortarán del CStringT objeto .
Valor devuelto
Devuelve el CStringT objeto que contiene la cadena recortada.
Comentarios
Quita las apariciones finales de uno de los siguientes elementos:
Carácter especificado por
chTarget.Todos los caracteres encontrados en la cadena especificada por
pszTargets.Espacios.
La CStringT& TrimRight(XCHAR chTarget) versión acepta un parámetro de carácter y quita todas las copias de ese carácter del final de los datos CStringT de cadena. Comienza desde el final de la cadena y funciona hacia delante. Se detiene cuando encuentra un carácter diferente o cuando CStringT se queda sin datos de caracteres.
La CStringT& TrimRight(PCXSTR pszTargets) versión acepta una cadena terminada en NULL que contiene todos los caracteres diferentes que se buscarán. Quita todas las copias de esos caracteres en el CStringT objeto . Comienza al final de la cadena y funciona hacia delante. Se detiene cuando encuentra un carácter que no está en la cadena de destino o cuando CStringT se queda sin datos de caracteres. No intenta hacer coincidir toda la cadena de destino con una subcadena al final de CStringT .
La CStringT& TrimRight() versión no requiere ningún parámetro. Recorta los caracteres de espacio en blanco finales del final de la CStringT cadena. Los caracteres de espacio en blanco pueden ser saltos de línea, espacios o tabulaciones.
Ejemplo
// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString str;
str = _T("Soccer is best!?!?!?!?!");
_tprintf_s(_T("Before: \"%s\"\n"), (LPCTSTR)str);
_tprintf_s(_T("After : \"%s\"\n"), (LPCTSTR)str.TrimRight(_T("?!")));
// Output:
// --------------------------
// Before: Soccer is best!?!?!?!?!
// After: Soccer is best