2011-09-28 122 views
52

我想從另一個QString得到QString,當我知道必要的索引。 例如: 主要字符串:「這是一個字符串」。 我想從前5個符號創建新的QString,並獲得「This」
輸入:第一個和最後一個字符數。
輸出:QStringQt。得到部分QString

如何創建它?

P.S.不僅前幾個字母,也從線的中間,例如從5至8

回答

35

使用left功能:

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

也看看mid()如果你想要更多的控制。

80

如果您不需要修改子字符串,那麼您可以使用QStringRefQStringRef類是現有QString的只讀包裝,它引用現有字符串中的子字符串。這比創建一個新的包含子字符串的QString對象的性能要好得多。例如。

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

如果確實需要修改字符串,然後left()mid()right()會做你需要什麼...

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

在你的第二個例子,你可以這樣做: QStringRef串的myString = .midRef(5,2); – Keith

+0

@Keith好點,儘管你不能修改QStringRef。 – Alan

+1

請注意,使用'QStringRef'是一個帶有額外複雜性的優化。除非你正在進行繁重的字符串操作,並且實際上你會從優化中受益(在大多數情況下,你不會),使用'QString'更安全更簡單。 –