Qt QString字符串截取

Qt QString字符串截取

利用Qt,结合一些图像处理,做软件的时候,做基础的首先是读一个图片进来,经常需要用字符串存一下所读图片的路径,或者名称。所以经常会利用到字符串的截取,可以从整串路径中得到图片名。

以下就介绍两个截取字符串的函数:

mid()函数和section()函数

mid()函数接受两个参数,第一个是起始位置,第二个是取串的长度。如果省略第二个参数。

fileName = QFileDialog::getOpenFileName(this,tr("Open Image"),filePath,tr("Image File(*.png *.jpg *.jpeg *.bmp)"));
qDebug() << "picture name: " << fileName;
//这种时候的输出就会是:
picture name:  "D:/QX_DP/jiequ/001.jpg"
//如果使用mid()函数
qDebug() << fileName.mid(15,3);
//就会得到我们想要的图片名:
"001"

但是这种方法一旦路径改变,几乎是不能再次利用的,所读出的内容必然变化,所以更推荐下面的section()函数

QString QString::section ( QChar sep, int start, int end = -1, SectionFlags flags = SectionDefault ) const

这个函数把字符串看成是几个块,这些块由 sep 分隔,start 和 end 指定块号,end 默认为 –1 ,返回的是[ start, end ]内的块组成的字符串,如果 start 和 end 都是负数,那么将从字符串的后面往前面数,返回 [ -end, –start ]内的块组成的字符串。SectionFlags是一些标记,如SectionSkipEmpty表示如果两个分隔符之间是空串,那么就会跳过。

如果你想截取的内容是用不同符号分开的,比如上面的图片名是/和.分开的,那么你可以这样做:

qDebug() << fileName.section(QRegExp("[/.]"),3,3)

[]内是所有分隔符的种类,第二个参数是从0开始的第几段,从此段开始,第三个参数是结束的段,这个3,3表示从第三个/后开始,到.结束。

会比mid好用很多,希望对大家有所帮助!

猜你喜欢

转载自blog.csdn.net/guo_xyx/article/details/109166981