MFC - Cuerdas
Stringsson objetos que representan secuencias de caracteres. La cadena de caracteres de estilo C se originó en el lenguaje C y sigue siendo compatible con C ++.
Esta cadena es en realidad una matriz unidimensional de caracteres que termina con un carácter nulo '\ 0'.
Una cadena terminada en nulo contiene los caracteres que componen la cadena seguidos de un nulo.
Aquí está el ejemplo simple de matriz de caracteres.
char word[12] = { 'H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd', '\0' };
Lo siguiente es otra forma de representarlo.
char word[] = "Hello, World";
La biblioteca Microsoft Foundation Class (MFC) proporciona una clase para manipular la cadena llamada CString. A continuación se muestran algunas características importantes de CString.
CString no tiene una clase base.
Un objeto CString consta de una secuencia de caracteres de longitud variable.
CString proporciona funciones y operadores que utilizan una sintaxis similar a la de Basic.
Los operadores de concatenación y comparación, junto con la administración de memoria simplificada, hacen que los objetos CString sean más fáciles de usar que las matrices de caracteres ordinarias.
Aquí está el constructor de CString.
No Señor. | Método y descripción |
---|---|
1 | CString Construye objetos CString de varias formas |
Aquí hay una lista de métodos de matriz:
No Señor. | Método y descripción |
---|---|
1 | GetLength Devuelve el número de caracteres de un objeto CString. |
2 | IsEmpty Comprueba si un objeto CString no contiene caracteres. |
3 | Empty Obliga a una cadena a tener una longitud 0. |
4 | GetAt Devuelve el carácter en una posición especificada. |
5 | SetAt Establece un personaje en una posición específica. |
Aquí hay una lista de métodos de comparación:
No Señor. | Método y descripción |
---|---|
1 | Compare Compara dos cadenas (distingue entre mayúsculas y minúsculas). |
2 | CompareNoCase Compara dos cadenas (no distingue entre mayúsculas y minúsculas). |
Aquí hay una lista de métodos de extracción:
No Señor. | Método y descripción |
---|---|
1 | Mid Extrae la parte media de una cadena (como la función Basic MID $). |
2 | Left Extrae la parte izquierda de una cadena (como la función Basic LEFT $). |
3 | Right Extrae la parte derecha de una cadena (como la función básica RIGHT $). |
4 | SpanIncluding Extrae los caracteres de la cadena, que están en el juego de caracteres dado. |
5 | SpanExcluding Extrae los caracteres de la cadena que no están en el juego de caracteres dado. |
Aquí hay una lista de métodos de conversión.
No Señor. | Método y descripción |
---|---|
1 | MakeUpper Convierte todos los caracteres de esta cadena en mayúsculas. |
2 | MakeLower Convierte todos los caracteres de esta cadena en minúsculas. |
3 | MakeReverse Invierte los caracteres de esta cadena. |
4 | Format Formatee la cadena como lo hace sprintf. |
5 | TrimLeft Recorte los primeros espacios en blanco de la cadena. |
6 | TrimRight Recorte los caracteres de espacio en blanco finales de la cadena. |
Aquí hay una lista de métodos de búsqueda.
No Señor. | Método y descripción |
---|---|
1 | Find Busca un carácter o subcadena dentro de una cadena más grande. |
2 | ReverseFind Encuentra un carácter dentro de una cadena más grande; comienza desde el final. |
3 | FindOneOf Encuentra el primer personaje coincidente de un conjunto. |
Aquí hay una lista de métodos de acceso al búfer.
No Señor. | Método y descripción |
---|---|
1 | GetBuffer Devuelve un puntero a los caracteres de CString. |
2 | GetBufferSetLength Devuelve un puntero a los caracteres en CString, truncando a la longitud especificada. |
3 | ReleaseBuffer Libera el control del búfer devuelto por GetBuffer |
4 | FreeExtra Elimina cualquier sobrecarga de este objeto de cadena al liberar cualquier memoria adicional previamente asignada a la cadena. |
5 | LockBuffer Desactiva el recuento de referencias y protege la cadena en el búfer. |
6 | UnlockBuffer Habilita el recuento de referencias y libera la cadena en el búfer. |
Aquí hay una lista de métodos específicos de Windows.
No Señor. | Método y descripción |
---|---|
1 | AllocSysString Asigna un BSTR de los datos de CString. |
2 | SetSysString Establece un objeto BSTR existente con datos de un objeto CString. |
3 | LoadString Carga un objeto CString existente desde un recurso de Windows CE. |
A continuación se muestran las diferentes operaciones en objetos CString:
Crear cadena
Puede crear una cadena utilizando un literal de cadena o creando una instancia de la clase CString.
BOOL CMFCStringDemoDlg::OnInitDialog() {
CDialogEx::OnInitDialog();
// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
CString string1 = _T("This is a string1");
CString string2("This is a string2");
m_strText.Append(string1 + L"\n");
m_strText.Append(string2);
UpdateData(FALSE);
return TRUE; // return TRUE unless you set the focus to a control
}
Cuando se compile y ejecute el código anterior, verá el siguiente resultado.
Cuerda vacía
Puede crear una cadena vacía usando un literal de cadena vacía o usando el método CString :: Empty (). También puede verificar si una cadena está vacía o no usando la propiedad booleana isEmpty.
BOOL CMFCStringDemoDlg::OnInitDialog() {
CDialogEx::OnInitDialog();
// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
CString string1 = _T("");
CString string2;
string2.Empty();
if(string1.IsEmpty())
m_strText.Append(L"String1 is empty\n");
else
m_strText.Append(string1 + L"\n");
if(string2.IsEmpty())
m_strText.Append(L"String2 is empty");
else
m_strText.Append(string2);
UpdateData(FALSE);
return TRUE; // return TRUE unless you set the focus to a control
}
Cuando se compile y ejecute el código anterior, verá el siguiente resultado.
Concatenación de cadenas
Para concatenar dos o más cadenas, puede usar el operador + para concatenar dos cadenas o un método CString :: Append ().
BOOL CMFCStringDemoDlg::OnInitDialog() {
CDialogEx::OnInitDialog();
// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
//To concatenate two CString objects
CString s1 = _T("This "); // Cascading concatenation
s1 += _T("is a ");
CString s2 = _T("test");
CString message = s1;
message.Append(_T("big ") + s2);
// Message contains "This is a big test".
m_strText = L"message: " + message;
UpdateData(FALSE);
return TRUE; // return TRUE unless you set the focus to a control
}
Cuando se compile y ejecute el código anterior, verá el siguiente resultado.
Longitud de la cuerda
Para encontrar la longitud de la cadena, puede usar el método CString :: GetLength (), que devuelve el número de caracteres en un objeto CString.
BOOL CMFCStringDemoDlg::OnInitDialog() {
CDialogEx::OnInitDialog();
// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
CString string1 = _T("This is string 1");
int length = string1.GetLength();
CString strLen;
strLen.Format(L"\nString1 contains %d characters", length);
m_strText = string1 + strLen;
UpdateData(FALSE);
return TRUE; // return TRUE unless you set the focus to a control
}
Cuando se compile y ejecute el código anterior, verá el siguiente resultado.
Comparación de cadenas
Para comparar dos cadenas de variables puede usar == operador
BOOL CMFCStringDemoDlg::OnInitDialog() {
CDialogEx::OnInitDialog();
// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
CString string1 = _T("Hello");
CString string2 = _T("World");
CString string3 = _T("MFC Tutorial");
CString string4 = _T("MFC Tutorial");
if (string1 == string2)
m_strText = "string1 and string1 are same\n";
else
m_strText = "string1 and string1 are not same\n";
if (string3 == string4)
m_strText += "string3 and string4 are same";
else
m_strText += "string3 and string4 are not same";
UpdateData(FALSE);
return TRUE; // return TRUE unless you set the focus to a control
}
Cuando se compile y ejecute el código anterior, verá el siguiente resultado.