Académique Documents
Professionnel Documents
Culture Documents
La paz interior comienza en el momento en el que decides no permitir, que ninguna persona o
evento, tome el control de tus emociones.
Trabajar con cadenas de caracteres (Strings), es algo que se realiza a menudo en la programación
informática.
Lo que permite Unicode es que los usuarios puedan visualizar la información de los programas sin
ningún problema, independientemente del idioma y de la plataforma sobre la cual está construido
el software.
La clase QString permite manipular la información de estas cadenas tipo Unicode y además
convertirlas a otros tipos de datos.
Cuando se crea una cadena en realidad lo que está pasando es que Qt almacena una cadena
compuesta por un conjunto de QChars (caracteres) de 16 bits. Veremos la clase QChar más
adelante.
1 #include <QString>
file:///C:/Users/Manuel/Desktop/Manejo de Strings con Qt – QString , QChar, QStringList – Imaginemos un mundo libre.html 1/10
22/3/2019 Manejo de Strings con Qt – QString , QChar, QStringList – Imaginemos un mundo libre
Para eliminar espacios en blanco del principio y del final y reemplazar un caracter considerado
como espacio por un espacio en blanco.
str.simplified();
También podemos crear la cadena inicialmente vacía y después agregarle los caracteres con:
QString str;
str.setNum(15);
Si la cadena está formada por caracteres entonces, puedes transformar esa cadena a entero usando
una base que puede estar entre 2 y 36. Por defecto es 10.
Por ejemplo si quiero transformar la cadena “FFF” del sistema hexadecimal a un entero uso la base
16, base usada por el sistema hexadecimal.
file:///C:/Users/Manuel/Desktop/Manejo de Strings con Qt – QString , QChar, QStringList – Imaginemos un mundo libre.html 2/10
22/3/2019 Manejo de Strings con Qt – QString , QChar, QStringList – Imaginemos un mundo libre
En este caso la función toInt() recibe 2 parámetros uno de tipo booleano que por defecto es True y
la base a la que sea desea convertir.
Si existe un error en la conversión, por ejemplo queremos convertir “loquesea” a entero, entonces
ok devuelve False y el entero tendrá como valor 0.
Si la cadena empieza con “0x” se usa la base 16, si empieza con “0” se usa la base 8, de lo contrario
se usa la base 10.
Y también podríamos hacer lo opuesto a lo que hicimos anteriormente, convertir un número a una
cadena dependiendo de la base.
int num = 255;
QString str = QString::number(d, 16);
// El valor de str es FF por la conversión del número 255 a hexadecimal (16)
QString tambiém tiene 4 métodos que nos van a permitir retornar una cadena de tipo const char *:
QChar similar a QString provee funciones que permiten convertir de y hacia otro formato y
también funciones que permiten comprobar si el caracter es de cierto tipo de dato o formato.
Todas estas funciones retornan True si el caracter es de cierto tipo de dato, de lo contrario retornan
False.
isNull(): // Si es nulo.
isNumber(); // Si es número.
isSymbol(); // Si es un símbolo.
QStringList es una subclase de QList que usa el mismo método de manejo de arrays que C++, es
decir, implementa un array de punteros.
Esta clase permite un acceso rápido a los elementos de la lista por medio de índices y permite
realizar la tareas comunes de inserción, eliminación, agrupación, ordenación y búsqueda de
elementos.
1 #include <QStringList>
Por medio de índices es que podemos acceder a los elementos de la lista y tenemos 2 opciones:
Usar el operador [], que permite acceder a los elementos y asignar, modificar valores a los mismos:
strList[indice];
at() es más rápido que [] puesto que no realiza lo que Qt llama una “deep copy” que lo que hace es
duplicar un objeto, en vez de eso realiza una “shallow copy” que es simplemente una referencia a
un objeto.
Una “deep copy” consume mucho más memoria y CPU y por el contrario una “shallow copy” es
mucho más rápida puesto que solo implica fijar un puntero.
file:///C:/Users/Manuel/Desktop/Manejo de Strings con Qt – QString , QChar, QStringList – Imaginemos un mundo libre.html 4/10
22/3/2019 Manejo de Strings con Qt – QString , QChar, QStringList – Imaginemos un mundo libre
removeAll(“cadena”); // Elimina todos los elementos que contengan la cadena que se especifica.
QStringList así como QString también tiene los métodos contains(), indexOf(), lastIndexOf(),
append(), prepend(), insert(),replace(), isEmpty() que vimos anteriormente y tienen la misma
funcionalidad y comportamiento.
Existe también el método filter() que retorna una lista de todas las cadenas que contienen una
subcadena especificada.
QStringList strList2;
strList2 = strList.filter(“ish”); // Según nuestra lista creada, strList2 contendría los elementos
English y Spanish.
Bueno y para terminar que mejor que un pedazo de código que permite comprobar todo lo
descrito.
Estoy usando QDebug, una clase de Qt que nos sirve para depurar el programa. Comúnmente
llamado el debugging.
Mejor dicho, para ir mostrando la salida que produce el código del programa.
Enjoy:
1 #include <QtGui/QApplication>
2 #include <QString>
3 #include <QStringList>
4 #include <QDebug>
5
6 int main(int argc, char *argv[])
file:///C:/Users/Manuel/Desktop/Manejo de Strings con Qt – QString , QChar, QStringList – Imaginemos un mundo libre.html 5/10
22/3/2019 Manejo de Strings con Qt – QString , QChar, QStringList – Imaginemos un mundo libre
7 {
8 QApplication app(argc, argv);
9
10 /********* Funcionamiento de QString *********/
11 QString str("soy usuario ");
12
13 str.append("de KDE ");
14 qDebug() << str; // "soy usuario de KDE "
15
16 str.prepend("Desde hace 3 años, ");
17 qDebug() << str; // "Desde hace 3 años, soy usuario de KDE "
18
19 str.replace(13, 4, " meses");
20 str.replace(37, 3, " OpenSuse");
21 qDebug() << str; // "Desde hace 3 meses, soy usuario de OpenSuse "
22
23 str.insert(46," y Digikam.");
24 qDebug() << str; // "Desde hace 3 mesess, soy usuario de OpenSuse y
25
26 str.remove(0,21);
27 qDebug() << str; // " soy usuario de OpenSuse y Digikam. "
28
29 str.resize(25);
30 qDebug() << str; // " soy usuario de OpenSuse"
31
32 QString str2 = " Espacios en blanco al inicio y fin ";
33 str2.trimmed();
34 qDebug() << str2; // " Espacios en blanco al inicio y fin "
35
36 QString str3 = "Open Source";
37 int i = 0;
38
39 while ((i = str3.indexOf("e", i)) != -1) {
40 qDebug() << "La letra e se encuentra en la posicion " << i;
41 ++i;
42 }
43 // La letra e se encuentra en la posicion 2
44 // La letra e se encuentra en la posicion 10
45
46 QString str4 = "Konsole";
47 qDebug() << str4.lastIndexOf("o"); // 4
48
49 QString str5 = "Software Libre";
50 qDebug() << str5.isEmpty(); // false
51 qDebug() << str5.contains("libre", Qt::CaseInsensitive); // true
52
53 QString str6;
54 int j = 9999999;
55 str6.append(QString("%1").arg(j));
56 qDebug() << str6; // "9999999"
57
58 QString str7 = "Amarok";
59 qDebug() << str7.startsWith("Ama"); // true
60 qDebug() << str7.endsWith("rok"); // true
61
62 str7.clear();
63 qDebug() << str7; // "" cadena vacía
64
65 QString str8;
66 str8.setNum(15);
67 qDebug() << str8; // "15"
file:///C:/Users/Manuel/Desktop/Manejo de Strings con Qt – QString , QChar, QStringList – Imaginemos un mundo libre.html 6/10
22/3/2019 Manejo de Strings con Qt – QString , QChar, QStringList – Imaginemos un mundo libre
68
69 QString str10 = "2010.03";
70 float a = str10.toFloat();
71 qDebug() << a; // 2010.03
72
73 QString str11 = "12345789";
74 int b = str11.toInt();
75 qDebug() << b; // 12345789
76
77 QString str12 = "FFF";
78 bool ok;
79 int c = str12.toInt(&ok, 16);
80 qDebug() << c; // 4095
81
82 QString str13 = QString::number(9.0);
83 qDebug() << str13; // "9"
84
85 int d = 255;
86 QString str14 = QString::number(d, 16);
87 qDebug() << str14; // "ff"
88
89 /********* Funcionamiento de QChar *********/
90
91 QChar chr = 'R';
92 qDebug() << chr.isNull(); // false
93 qDebug() << chr.isPrint(); // true
94 qDebug() << chr.isPunct(); // false
95 qDebug() << chr.isMark(); // false
96 qDebug() << chr.isLetter(); // true
97 qDebug() << chr.isNumber(); // false
98 qDebug() << chr.isLetterOrNumber(); // true
99 qDebug() << chr.isDigit(); // false
100 qDebug() << chr.isSymbol(); // false
101
102 qDebug() << chr.toLower(); // retorna 'r'
103 qDebug() << chr.toUpper(); // 'R' nuevamente
104
105 qDebug() << chr.category(); // 15, categoria Unicode del caracter
106 qDebug() << chr.unicode(); // 82, valor numérico Unicode del caracte
107
108 /********* Funcionamiento de QStringList *********/
109
110 QStringList idiomas;
111 idiomas << "English" << "Spanish" << "French" << "German" << "Japane
112
113 if ( idiomas[1] == "Spanish" ) {
114 qDebug() << "Si existe Spanish";
115 } else {
116 qDebug() << "No existe";
117 }
118 // Si existe Spanish
119
120 for (int i = 0; i < idiomas.size(); ++i) {
121 qDebug() << idiomas.at(i); //
122 }
123 // "English"
124 // "Spanish"
125 // "French"
126 // "German"
127 // "Japanese"
128 // "German"
file:///C:/Users/Manuel/Desktop/Manejo de Strings con Qt – QString , QChar, QStringList – Imaginemos un mundo libre.html 7/10
22/3/2019 Manejo de Strings con Qt – QString , QChar, QStringList – Imaginemos un mundo libre
129 // "Chinese"
130
131 QString str15 = idiomas.join(",");
132 qDebug() << str15; // "English,Spanish,French,German,Japanese,German
133
134 QStringList strList;
135 strList = str15.split(",");
136 qDebug() << strList; // ("English", "Spanish", "French", "German", "
137
138 QStringList strList2;
139 strList2 = strList.filter("ish");
140 qDebug() << strList2; // ("English", "Spanish")
141
142 strList2.replaceInStrings("i","e");
143 qDebug() << strList2; // ("Englesh", "Spanesh")
144
145 idiomas.sort();
146 qDebug() << idiomas; // ("Chinese", "English", "French", "German", "G
147
148 idiomas.removeAt(1);
149 qDebug() << idiomas; // ("Chinese", "French", "German", "German", "J
150
151 idiomas.removeFirst();
152 qDebug() << idiomas; // ("French", "German", "German", "Japanese", "
153
154 idiomas.removeLast();
155 qDebug() << idiomas; // ("French", "German", "German", "Japanese")
156
157 idiomas.removeOne("French");
158 qDebug() << idiomas; // ("German", "German", "Japanese")
159
160 idiomas.removeAll("German");
161 qDebug() << idiomas; // ("Japanese")
162
163 return app.exec();
164 }
Advertisements
Posted on March 11, 2010February 15, 2012 by Ronny YabarPosted in QtTagged Programación en
Qt, QString, Qt, Strings en Qt.
Related
QGraphicsViewIn "Qt"
file:///C:/Users/Manuel/Desktop/Manejo de Strings con Qt – QString , QChar, QStringList – Imaginemos un mundo libre.html 8/10
22/3/2019 Manejo de Strings con Qt – QString , QChar, QStringList – Imaginemos un mundo libre
1. Yoni says:
March 24, 2010 at 5:04 pm
Excelente, segui publicando cosas de QT que son excelentes. Me ayudo mucho. Muchas gracias
Reply
2. Erick Aldi says:
June 14, 2012 at 2:13 am
Gracias por tu aporte! esta muy completo y me ha sacado de apuros! salu2
Reply
3. Pedro says:
September 15, 2016 at 4:14 am
Excelente, muy completo felicitaciones, le animo a continuar compartiendo sus conocimientos,
todo me fue de mucha ayuda, Gracias
Reply
4. orley says:
November 14, 2017 at 7:12 pm
Muchas gracias por hacer esto, es de mucha ayuda
Reply
Blog at WordPress.com.
Follow
Follow
Sign up
Log in
Copy shortlink
Report this content
Manage subscriptions
Collapse this bar
file:///C:/Users/Manuel/Desktop/Manejo de Strings con Qt – QString , QChar, QStringList – Imaginemos un mundo libre.html 10/10