Introducción a Patrones de Diseño en C++ con Qt4/1.11 Cadenas

Versión para imprimir esta pagina

Cadenas

editar

Cuando trabajamos con cadenas en Qt, tenemor tres opciones:

  1. const char*, o cadenas al estilo C, son usadas principalmente cuando estamos interpasando con librerías de C, y raramente de otra forma.
  2. string, desde STL, que está disponible en cualquier parte
  3. 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

editar
Ejemplo: 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

editar
Ejemplo: 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;
}



Versión para imprimir esta pagina