Introducción a Patrones de Diseño en C++ con Qt4/1.11 Cadenas
Cadenas
editarCuando trabajamos con cadenas en Qt, tenemor tres opciones:
- const char*, o cadenas al estilo C, son usadas principalmente cuando estamos interpasando con librerías de C, y raramente de otra forma.
- string, desde STL, que está disponible en cualquier parte
- QString es preferido por encima de las cadenas STL, porque es mucho más fácil de usar. Soporta encritura en copia perezosa (lo que significa que las funciones pueden retornar Qstring por valor sin alojar y copiar la cadena entera), y estas tienen soporte unicode integrado, para una fácil internacionalización.
Ejemplo 1.9
editarEjemplo: Ejemplo 1.9 Demostración básica de cadenas STL
src/generic/stlstringdemo.cpp
s1 += s2; Concatenación
#include <string> #include <iostream> int main() { using namespace std; string s1("Esta "), s2("es una "), s3("cadena."); s1 += s2; string s4 = s1 + s3; cout << s4 << endl; string s5("La longitud esta cadena es: "); cout << s5 << s4.length() << " caracteres." << endl; cout << "Ingresa una sentencia: " << endl; getline(cin, s2); cout << "Aquí esta tu sentencia: \n" << s2 << endl; cout << "El tamaño de esta fue de: " << s2.length() << endl; return 0; }
Veamoslo compilado y corriendo:
src/generic> g++ -ansi -pedantic -Wall stlstringdemo.cpp src/generic> ./a.out Esta es una cadena. La longitud de la cadena es: 19 caracteres. Ingresa una sentencia: 20 años de trabajo duro Aquí está tu sentencia: 20 años de trabajo duro El tamaño de esta fue de: 23 src/generic>
Observa que usamos la función getline(istream, string) para tomar una cadena desde un flujo de entrada estándar. El mismo ejemplo, reescrito para usar Qt en lugar de STL es mostrado en el Ejemplo 1.10.
Ejemplo 1.10
editarEjemplo: Ejemplo 1.10 src/early-examples/qstring/qstringdemo.cpp
.arg(s4).arg(s4.length()); Parametrización del argumento
#include <QString> #include <QTextStream> int main() { QTextStream cout(stdout); QTextStream cin(stdin); QString s1("Esto "), s2("es una "), s3("cadena."); s1 += s2; QString s4 = s1 + s3; cout << s4 << endl; QString s5 = QString("El tamaño de '%1' es: %2 caracteres.") .arg(s4).arg(s4.length()); cout << s5 << endl; cout << "Ingresa una sentencia: " << endl; s2 = cin.readLine(); cout << "Aquí esta tu sentencia: \n" << s2 << endl; cout << "El tamaño de esta fue: " << s2.length() << endl; return 0; }