2011-09-28 16 views
52

Voglio ottenere QString da un altro QString, quando conosco gli indici necessari. Ad esempio: Stringa principale: "Questa è una stringa". Voglio creare il nuovo QString dai primi 5 simboli e ottenere "Questo".
input: primo e ultimo numero di carattere.
output: new QString.Qt. ottenere parte di QString

Come si crea?

P.S. Non solo i primi diverse lettere, anche dal centro della linea, ad esempio da 5 a 8.

risposta

35

Utilizzare la funzione left:

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

hanno anche uno sguardo a mid() se si desidera un maggiore controllo.

80

Se non è necessario modificare la sottostringa, è possibile utilizzare QStringRef. La classe QStringRef è un wrapper di sola lettura attorno a uno QString esistente che fa riferimento a una sottostringa all'interno della stringa esistente. Ciò offre prestazioni molto migliori rispetto alla creazione di un nuovo oggetto QString per contenere la sottostringa. Per esempio.

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

Se si ha bisogno di modificare la stringa, quindi left(), mid() e right() farà ciò che è necessario ...

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

Nel vostro secondo esempio, si può fare: QStringRef sottoStringa = myString .midRef (5,2); – Keith

+0

@Keith buon punto, anche se non è possibile modificare un QStringRef. – Alan

+1

Si noti che l'utilizzo di 'QStringRef' è un'ottimizzazione che presenta complessità aggiuntiva. A meno che non si stiano facendo pesanti manipolazioni di stringhe e in effetti si trarrà vantaggio dall'ottimizzazione (nella maggior parte dei casi non lo si farà), è più sicuro e semplice utilizzare un 'QString'. –