2011-09-28 230 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'更安全更简单。 –