2013-02-16 119 views
1

我想弄清楚QString :: lastIndexOf和QString :: chop刪除文件後綴,所以我可以自己添加一個後綴。但是,我得到了奇怪的輸出,這對我來說沒有意義。Qt5刪除文件路徑的後綴

這裏是我的測試代碼:

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" 

我想只有讓它刪除「巴紐」最後。我不知道23從哪裏來。

回答

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中。)

+2

是啊!謝謝分配。我沒有意識到.lastIndexOf從一開始就統計了QString!而且,我最終也使用了QFileInfo! – 2013-02-16 05:50:16