【发布时间】:2011-11-26 22:26:13
【问题描述】:
当我知道必要的索引时,我想从另一个QString 获取QString。
例如:
主字符串:“这是一个字符串”。
我想从前 5 个符号创建新的 QString 并获得 "This "。
input : 第一个和最后一个字符号。
输出: 新的QString。
如何创建它?
P.S.不仅是前几个字母,还包括行中间,例如从 5 到 8。
【问题讨论】:
当我知道必要的索引时,我想从另一个QString 获取QString。
例如:
主字符串:“这是一个字符串”。
我想从前 5 个符号创建新的 QString 并获得 "This "。
input : 第一个和最后一个字符号。
输出: 新的QString。
如何创建它?
P.S.不仅是前几个字母,还包括行中间,例如从 5 到 8。
【问题讨论】:
如果不需要修改子字符串,那么可以使用QStringRef。 QStringRef 类是现有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"
【讨论】:
QStringRef 是一种具有额外复杂性的优化。除非您正在执行繁重的字符串操作,并且您实际上会从优化中受益(在大多数情况下,您不会),否则使用 QString 会更安全、更简单。
We suggest that you only use this class in stable code where profiling has clearly identified that performance improvements can be made by replacing standard string operations with the optimized substring handling provided by this class.
使用left函数:
QString yourString = "This is a string";
QString leftSide = yourString.left(5);
qDebug() << leftSide; // output "This "
如果您想要更多控制权,还可以查看mid()。
【讨论】: