Qt的.获得QString的一部分

Ale*_*eyS 65 qstring qt substring

当我知道必要的索引时,我想QString从另一个人那里得到QString.例如:主字符串:"这是一个字符串".我想QString从前5个符号创建新的并获得"This".
输入:第一个和最后一个字符编号.
输出:新的QString.

如何创建它?

PS不仅前几个字母,也来自中间的字母,例如从5到8.

Ala*_*lan 101

如果您不需要修改子字符串,那么您可以使用QStringRef.该QStringRef班是一个只读的包装围绕现有QString的现有字符串中引用子.这比创建QString包含子字符串的新对象提供了更好的性能.例如

QString myString("This is a string");
QStringRef subString(&myString, 5, 2); // subString contains "is"
Run Code Online (Sandbox Code Playgroud)

如果你确实需要修改子串,那么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"
Run Code Online (Sandbox Code Playgroud)

  • 请注意,使用`QStringRef`是一种额外复杂性的优化.除非您正在进行繁重的字符串操作,并且您实际上将从优化中受益(在大多数情况下,您不会),使用`QString`更安全,更简单. (2认同)
  • @this.lau_我记得Java子字符串默认都是这样工作的,但后来看到一些大字符串的小子字符串阻止大字符串被垃圾收集的情况后,他们摆脱了这种行为。 (2认同)

lau*_*ent 44

使用left功能:

QString yourString = "This is a string";
QString leftSide = yourString.left(5);
qDebug() << leftSide; // output "This "
Run Code Online (Sandbox Code Playgroud)

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