的一部分,如何從這個QString
獲得的QString
C:/Users/Admin/AppData/Local/Temp/AudelloTemp/Recording.mp3
獲得價值"Recording.mp3"
如果我使用lastIndexof('/')
函數,那麼如果我使用indexof('/')
函數最後一次出現
向後搜索,然後向前查找第一發生。
我沒有得到任何方法得到它。
或者是使用循環獲取該值的唯一方法?
的一部分,如何從這個QString
獲得的QString
C:/Users/Admin/AppData/Local/Temp/AudelloTemp/Recording.mp3
獲得價值"Recording.mp3"
如果我使用lastIndexof('/')
函數,那麼如果我使用indexof('/')
函數最後一次出現
向後搜索,然後向前查找第一發生。
我沒有得到任何方法得到它。
或者是使用循環獲取該值的唯一方法?
看到,因爲它是一個文件的路徑和你要找的文件名,正確的做法是這樣的:
// 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
。
如何:
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-之一。
鑑於存在'QFileInfo',不好的建議。自制路徑編輯通常以某種方式被打破。在Qt中,有效路徑由'/'或'QDir :: separator()'分開(這兩者在某些平臺上可以相同)。不要重新實現已經存在的內容。 –
是的,謝謝我誤讀了它 – bhupinder