我正在试图找出QString :: lastIndexOf和QString :: chop来删除文件后缀,所以我可以自己添加一个。但是,我得到的奇怪的输出对我来说没有意义。
这是我的测试代码:
QString filename = "C:/Users/Ir77/Desktop/a.png";
qDebug() << "Filename is " << filename;
QString y = '.';
int x = filename.lastIndexOf(y, -1);
qDebug() << "Last index of . is " << x;
filename.chop(x);
qDebug() << "filename is now " << filename;
这是我从中得到的qDebug()信息:
Filename is "C:/Users/Ir77/Desktop/a.png"
Last index of . is 23
filename is now "C:/U"
我试图只删除最后的“.png”。我不知道23来自哪里。
答案 0 :(得分:3)
QString :: chop()从字符串末尾删除字符。 “”是第23个(从0开始)的char,但是调用chop()会删除23个字符并留下“C:/ U”。
http://doc.qt.digia.com/4.7-snapshot/qstring.html#chop
您是否考虑过使用QFileInfo以便它能为您完成工作? (http://qt-project.org/doc/qt-4.8/qfileinfo.html)这将为您提供一系列方便的函数来获取路径,文件名的一部分等。
(我对Qt 4.8更熟悉,但我假设在Qt 5.0中chop()没有改变。)