2011-09-28 24 views
52

Quiero obtener QString de otro QString, cuando sé los índices necesarios. Por ejemplo: Cadena principal: "Esto es una cadena". Quiero crear un nuevo QString a partir de los primeros 5 símbolos y obtener "Esto".
entrada: primer y último número de char.
salida: nuevo QString.Qt. obtener parte de QString

Cómo crear?

P.S. No sólo primeras letras, también de la mitad de la línea, por ejemplo de 5 hasta 8.

Respuesta

35

Utilice la función left:

QString yourString = "This is a string"; 
QString leftSide = yourString.left(5); 
qDebug() << leftSide; // output "This " 

también echar un vistazo a mid() si desea tener más control.

80

Si no necesita modificar la subcadena, puede usar QStringRef. La clase QStringRef es un contenedor de solo lectura alrededor de un QString existente que hace referencia a una subcadena dentro de la cadena existente. Esto proporciona un rendimiento mucho mejor que crear un nuevo objeto QString para contener la subcadena. P.ej.

QString myString("This is a string"); 
QStringRef subString(&myString, 5, 2); // subString contains "is" 

Si resulta necesario modificar el SUBCADENA, left(), mid()right() y hará lo que usted necesita ...

QString myString("This is a string"); 
QString subString = myString.mid(5,2); // subString contains "is" 
subString.append("n't"); // subString contains "isn't" 
+1

En el segundo ejemplo, se puede hacer: QStringRef subCadena = miCadena .midRef (5,2); – Keith

+0

@Keith es un buen punto, aunque no se puede modificar un QStringRef. – Alan

+1

Tenga en cuenta que usar 'QStringRef' es una optimización que viene con complejidad adicional. A menos que esté haciendo manipulaciones pesadas de cadenas, y realmente se beneficiará de la optimización (en la mayoría de los casos, no lo hará), es más seguro y simple usar un 'QString'. –

Cuestiones relacionadas