Share via


String Data Management

Visual C++ proporciona varias maneras de administrar datos de cadena:

  • Manipulación de cadenas (CRT) para trabajar con cadenas terminadas en null de estilo C

  • La API Win32 funciona para administrar cadenas

  • La clase CStringT Classde MFC, que proporciona objetos string flexibles, tamaño

  • Ordenar CStringT Class, que proporciona un objeto de cadena de la MFC- independiente con la misma funcionalidad que CString

Casi todos los programas trabajan con datos de la cadena. La clase de CString MFC es a menudo la mejor solución para administrar flexible de la cadena. A partir de la versión 7,0, CString se puede utilizar en MFC o programas de la MFC- independiente. La biblioteca en tiempo de ejecución y CString admiten las cadenas que contienen caracteres (anchos) multibyte, como en Unicode o programación con MBCS.

En este artículo se describe los servicios de uso general que la biblioteca de clases proporciona relacionado para la manipulación de cadenas. Temas cubiertos en incluyen de caso:

  • Unicode y MBCS proporcionan portabilidad

  • CStrings y const carbonizan punteros

  • Recuento de referencias de CString

La clase de CStringT Class proporciona compatibilidad de manipulación de cadenas. Se han diseñado para reemplazar y extender la funcionalidad proporcionada normalmente por el paquete de la cadena de la biblioteca en tiempo de ejecución de C. El miembro de la clase de CString funciona y operadores para la cadena simplificada que administran, similares a los de básico. La clase también proporciona constructores y operadores para crear, asignar, y comparar CStrings y tipos de datos estándar de la cadena de C++. Dado que CString no se deriva de CObject, puede utilizar los objetos de CString independientemente la biblioteca Microsoft Foundation Class (MFC).

los objetos deCString siguen la “semántica de valores”. Un objeto de CString representa un valor único. Piense en CString como cadena real, no como un puntero a una cadena.

Un objeto de CString representa una secuencia de un número de caracteres variable. Los objetos deCString se pueden considerar como matrices de caracteres.

Unicode y MBCS proporcionan Portabilidad

Con la versión 3,0 de MFC y después, MFC, incluidos CString, está habilitada para Unicode y los juegos de caracteres multibyte (MBCS). Esta compatibilidad facilita para escribir aplicaciones portables que puede compilar en Unicode o caracteres ANSI. Para habilitar esta portabilidad, cada carácter de un objeto de CString es de TCHARcon tipo, que se define como wchar_t si define el símbolo _UNICODE cuando se compila la aplicación, o como char si no. Un carácter de wchar_t es de 16 bits de ancho. Se habilita MBCS si compila con el símbolo _MBCS definido. MFC se compila con el símbolo de _MBCS (para las bibliotecas de NAFX) o el símbolo de _UNICODE (para las bibliotecas de UAFX) definido.

Nota

Los ejemplos de CString en esta y los casos complementarios en cadenas muestran cadenas literales con formato correctamente para la portabilidad de Unicode, mediante la macro de _T , cuáles traducen la cadena literal al formulario:

L"literal string"

Nota

lo que el compilador trata como cadena Unicode.Por ejemplo, el código siguiente:

CString strName = _T("Name");   

Nota

se traduce como cadena Unicode si _UNICODE se define o como una cadena ANSI si no.Para obtener más información, vea el artículo Unicode and Multibyte Character Set (MBCS) Support.

Un objeto de CString puede almacenar hasta INT_MAX (2.147.483.647) caracteres. Se usa el tipo de datos de TCHAR para obtener o establecer los caracteres individuales dentro de CString opóngase. A diferencia de las matrices de caracteres, la clase de CString tiene una función integrada de asignación de memoria. Esto permite que los objetos de CString crezcan automáticamente según sea necesario (es decir, no tiene que preocuparse de llegar a un objeto de CString a cadenas más largas aptas).

CStrings y const carbonizan punteros

Un objeto de CString también puede representar como una cadena literal de estilo C ( PCXSTR, que es igual que const char* si no bajo Unicode). El operador de conversión de CSimpleStringT::operator PCXSTR permite que los objetos de CString sean reemplazados libremente para punteros de carácter en llamadas de función. El constructor de CString( LPCWSTRpszSrc**)** permite que los punteros de caracteres son reemplazados por los objetos de CString .

No se realiza ningún intento de doblar los objetos de CString . Si crea dos objetos de CString que contienen Chicago, por ejemplo, los caracteres de Chicago se almacenan en dos lugares. (Esto no puede ser true de versiones futuras de MFC, por lo que no debe depender de).

Nota

Utilice las funciones miembro de CSimpleStringT::GetBuffer y de CSimpleStringT::ReleaseBuffer si necesita tener acceso directamente a CString como puntero que no es constante a un carácter.

Nota

Utilice las funciones miembro de CStringT::AllocSysString y de CStringT::SetSysString para asignar y para establecer los objetos de BSTR utilizados en la automatización (conocida antes como OLE Automation).

Nota

Cuando sea posible, asigna los objetos de CString en el cuadro en lugar de en la pila.Esto ahorra memoria y simplifica pasar parámetros.

La clase de CString no se implementa como una clase de colección de la biblioteca Microsoft Foundation Class, aunque los objetos de CString se pueden almacenar siempre como elementos en colecciones.

Recuento de referencias de CString

A partir de la versión 4,0 de MFC, cuando se copian los objetos de CStringT Class , MFC incrementa el recuento de referencias en lugar de copiar los datos. Esto crea pasar parámetros por valor y devolver los objetos de CString por valor más eficaz. Estas operaciones hacen que el constructor de copias que se denomine, a veces más de una vez. El incremento de un recuento de referencia reduce que sobrecarga para estas operaciones comunes y crea mediante CString una opción más atractiva.

Cuando se destruye cada copia, el recuento de referencias en el objeto original se reduzca. El objeto de CString original no se destruye hasta que el recuento de referencias se reduzca a cero.

Puede utilizar las funciones CSimpleStringT::LockBuffer y CSimpleStringT::UnlockBuffer miembro de CString para deshabilitar o habilitar el recuento de referencias.

Vea también

Conceptos

Temas generales de MFC