2014-01-22 114 views
2

的一部分,如何從這個QString獲得的QString

C:/Users/Admin/AppData/Local/Temp/AudelloTemp/Recording.mp3 

獲得價值"Recording.mp3"如果我使用lastIndexof('/')函數,那麼如果我使用indexof('/')函數最後一次出現

向後搜索,然後向前查找第一發生。

我沒有得到任何方法得到它。

或者是使用循環獲取該值的唯一方法?

回答

7

看到,因爲它是一個文件的路徑和你要找的文件名,正確的做法是這樣的:

// When you have this: 
QString s("C:/Users/Admin/AppData/Local/Temp/AudelloTemp/Recording.mp3"); 

// Do this: 

QFileInfo f(s); 
QString s1 = f.fileName(); 
// now s1 is "Recording.mp3" 

然而,要回答你的問題的措辭,在QString成員函數的使用會是lastIndexOf()。您錯誤地閱讀了文檔:它不是「向後搜索最後一次出現」,而是「查找字符串中的最後一個事件,通過向後搜索來完成」。所以在你的情況下,確實會從Recording.mp3返回/分隔AudelloTemp

+0

是的,謝謝我誤讀了它 – bhupinder

-1

如何:

QString filename_only(const QString& path) 
{ 
    int index = path.lastIndexOf('/'); // check validity 
    return path.right(path.size() - index); // Might be off by one, feel free to fix 
} 

我沒有在這裏的Qt現在,所以請檢查,如果我的off-by-之一。

+0

鑑於存在'QFileInfo',不好的建議。自制路徑編輯通常以某種方式被打破。在Qt中,有效路徑由'/'或'QDir :: separator()'分開(這兩者在某些平臺上可以相同)。不要重新實現已經存在的內容。 –