La clase CString - Lo basico

1 - Lo basico

[editar]
Tutorial creado por Juan Manuel. Extraido de: http://www.lawebdejm.com
30 de Noviembre de 1999
Un objeto CString representa una secuencia de variables de tipo TCHAR, es decir caracteres alfanuméricos, de 1 ó 2 bytes cada uno de ellos, dependiendo de si el símbolo _UNICODE está definido o no. Esta secuencia, además es de longitud variable, pudiendo añadir, eliminar, concatenas nuevos caracteres y cadenas.

La clase se define en el archivo de cabecera "afx.h", y se implementa en 4 archivos: "strcore.cpp", "winstr.cpp", "strex.cpp" y "afx.inl".
Para utilizar esta clase debemos hacer un include de "stdafx.h", y no de "afx.h" como podría parecer lógico. Esto es debido a que al incluír "stdafx.h", estamos incluyendo el paquete de MFC personalizado para nuestro proyecto, y no el MFC completo.
De todas formas, los asistentes de Visual C++ hacen este paso por nosotros, creando un archivo "stdafx.h", según el uso del MFC que vamos a hacer, e incluyéndolo en los archivos de nuestro proyecto.

Esta clase, no hereda de CObject como la gran mayoría de las clases de MFC, por lo que no puede beneficiarse de la serialización o información en tiempo de ejecución (a través de la estructura CRuntimeClass).
Esto es así dado que la clase CString es de uso intensivo dentro de cualquier aplicación MFC, por lo que en su diseño se dio mucha importancia a su ocupación en memoria y velocidad de ejecución.

La clase define atributos, funciones miembro y operadores que permiten simplificar mucho el tratamiento de cadenas de caracteres, y olvidarnos de las típicas funciones de C pensadas para los arrays de chars: strcmp, strcpy, strlen, etc.

Como cualquier otra clase, podemos instanciar variables a través de objetos, punteros o referencias, como en los siguientes ejemplos:

|| Objeto || La memoria de los objetos se asigna en la pila, como cualquier otra variable automática o local.
No es necesario reservar ni liberar explícitamente la memoria, ya que las variables automáticas lo hacen de forma implícita.
La creación de estas variables es muy rápida, ya que el espacio de memoria de la pila ya está previamente reservado, aunque hay que tener cuidado de no crear demasiadas variables de este tipo, ya que podríamos desbordar la pila.
Para más información sobre este tipo de variables se puede consultar el curso sobre la pila en Win32. || || || { se declara el objeto y se reserva la memoria automaticamente CString objeto = "hola"; se utiliza el operador "=" objeto = objeto + " mundo"; la memoria se libera de forma automática return; } || || || Puntero || La memoria de los punteros se reserva en el montón, permitiendo así dejar más espacio libre en la pila. Además, de este modo, podemos controlar la reserva/liberación del objeto, ya que la reserva dinámica de memoria requiere de operaciones explícitas para la creación/destrucción de memoria.
Hay que prestar atención a la velocidad de ejecución, ya que puede ser bastante más lenta que con variables automáticas, sobre todo si la función va a ser ejecutada múltiples veces.
Para más información sobre estas variables se puede consultar el curso sobre los montones en Win32. || || || { CString *puntero;
se reserva la memoria en el montón puntero = new CString("hola"); se asigna con el operador "=" *puntero = *puntero + " mundo"; se libera la memoria del montón delete puntero; return; } || || || Referencia || Las variables referencia son muy parecidas a los punteros, con la única excepción de que no es posible realizar aritmética de punteros con ellas (desplazamiento del puntero por la memoria, desreferencia, etc.).
Estas variables no implican una asignación dinámica de memoria, ya que pueden "apuntar" a cualquier zona de memoria, ya sea una variable creada en la pila (automática) o en el montón (dinámica).
Normalmente, se utilizan en parámetros de funciones, para pasar objetos por referencia, pudiendo evitar su modificación.
Para más información sobre las variables automáticas y dinámicas puedes consultar los cursos sobre la pila y los montones en Win32. || || || void SetHolaMundo(CString &referencia) { el parámetro "referencia" en realidad es un puntero a un objeto CString, pero se usa como si no fuera puntero. se asigna con el operador "=" referencia = referencia + " mundo"; al ser referencia, se utiliza el operador "." en vez del operador de indirección "->" propio de los punteros referencia.MakeLower(); return; } || ||
[editar]

3 opiniones

sexo

creo k l sxo no solo s bsa n tenr rlaciones sino poder espresar los sentimintos de formee exotik y tod eso
Ayuda.

Como paso un cstrin a char en visual. Net.
Regular.

Es algo util este curso pero le falta, pero si me ayudo un poco

gracias.

Tutoriales relacionados con 'La clase CString'

Este curso profundiza en la implementación de la clase CString dentro del framework MFC. Se... Más »
Este es el diario de Peter Class sobre sus dias aprendizaje de una disciplina de... Más »

Autor y licencia de 'La clase CString'


Tutorial de Juan Manuel. Extraido de: http://www.lawebdejm.com CopyLeft
Este contenido ha sido recopilado por el equipo de Wikilearning. Todo el contenido recopilado se ha obtenido respetando y comunicando en nuestro site la licencia de cada fuente.
Wikilearning tiene permiso expreso por escrito de los autores para publicar los contenidos que ha extraído de otras webs, incluyendo su uso comercial.