1

我试图找出 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 是从哪里来的。

4

1 回答 1

3

QString::chop() 删除字符串末尾的字符。“。” 是第 23 个(从 0 开始的)字符,但调用 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,但我假设 Chop() 在 Qt 5.0 中没有改变。)

于 2013-02-16T05:39:39.653 回答