gpt4 book ai didi

c++ - 如何指定 QString::indexOf 方法?

转载 作者:搜寻专家 更新时间:2023-10-31 00:44:02 25 4
gpt4 key购买 nike

我写了一个源代码如下:

    int main(int argc, char *argv[]) {
QString x = "start some text here end";
QString s = "start";
QString e = "end";
int start = x.indexOf(s, 0, Qt::CaseInsensitive);
int end = x.indexOf(e, Qt::CaseInsensitive);

if(start != -1){ // we found it
QString y = x.mid(start + s.length(), ((end - (start + s.length())) > -1 ? (end - (start + s.length())) : -1)); // if you dont wanna pass in a number less than -1
or
QString y = x.mid(start + s.length(), (end - (start + s.length()))); // should not be any issues passing in a number less than -1, still works

qDebug() << y << (start + s.length()) << (end - (start + s.length()));
}

}

问题是,在我的文本文件中,“结束”这个词经常出现。那么,有没有一种方法可以创建一个 indexOf 方法,该方法只搜索出现在“QString s =“start””之后的第一个“QString e =“end””?问候

最佳答案

QString的indexOf声明如下:

int QString::indexOf ( const QString & str, int from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive ) const

如果您看一下,您会发现比调用 indexOf 时使用的参数多了一个参数。这是因为它有一个默认值,它是参数:

int from = 0

这个 from 默认设置为 0,所以无论何时省略这个值,搜索都是从字符串的开头完成的,但是你可以将它的值设置为你找到“start”单词的索引,就像这样:

int start = x.indexOf(s, 0, Qt::CaseInsensitive); 
int end = x.indexOf(e, start, Qt::CaseInsensitive); //notice the use of start as the 'from' argument

这样您将获得第一个“开始”单词之后的第一个“结束”单词的索引。希望这对您有所帮助!

关于c++ - 如何指定 QString::indexOf 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9610533/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com