一般在項目中經常需要組合路徑,與其他程序進行相互調用傳遞消息通信。 經常可能因為多加斜杠、少加斜杠等問題導致很多問題。 為了解決這些問題,我們可以使用QDir
來完成路徑的拼接,不要直接拼接字符串。
QDir的靜態方法QDir::cleanPath()
是為了規范化路徑名的,在使用QDir組合路徑時,只需使用/
作為路徑分隔符即可。 例如:
#include
#include
#include
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QString dirPath = QDir::cleanPath(QDir::homePath() + "/Documents/data");
qDebug() << dirPath;
return a.exec();
}
上述代碼中,使用QDir::homePath()
獲取用戶文檔目錄,并使用/
作為路徑分隔符將其與子目錄data
組合起來,得到了完整的目錄路徑。
QDir::cleanPath()
可以刪除路徑中多余的斜杠。例如,如果路徑中有多個連續斜杠或末尾斜杠,則該方法將它們替換為單個斜杠。
以下是一個示例代碼:
#include
#include
#include
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QString path1 = QDir::cleanPath("/home/binjie09//Documents/");// 多個連續的斜杠
qDebug() << "Cleaned path1:" << path1;
QString path2 = QDir::cleanPath("/home/binjie09/Documents/images/");// 末尾斜杠
qDebug() << "Cleaned path2:" << path2;
return a.exec();
}
上述代碼中,使用QDir::cleanPath()
清理了兩個路徑,分別是/home/binjie09//Documents/
和/home/binjie09/Documents/images/
。在清理后,多個連續斜杠被替換成一個斜杠,末尾斜杠被去除,得到了規范化后的路徑。
使用QDir拼接多個路徑,可以使用QDir::filePath()
方法。例如:
QString path1 = "C:/documents";
QString path2 = "work";
QString path3 = "project1";
QDir dir(path1);
QString result = dir.filePath(path2);
dir.setPath(result);
result = dir.filePath(path3);
qDebug() << result; // 輸出:C:/documents/work/project1
上述代碼中,我們首先定義了三個路徑,分別是"C:/documents"、"work"和"project1"。然后,我們創建了一個QDir對象,用于表示第一個路徑"C:/documents"。
接下來,使用filePath()
方法將其他兩個路徑拼接起來。首先將"path2"添加到QDir對象中生成新的路徑,然后將"path3"再添加到新生成的路徑中。最終,得到了拼接后的路徑"C:/documents/work/project1"。
需要注意的是,在調用filePath()
方法之前,要先創建一個QDir對象,用于表示第一個路徑。這是因為filePath()
方法是QDir類的方法,只能通過QDir對象調用。
審核編輯:湯梓紅
-
字符串
+關注
關注
1文章
584瀏覽量
20553 -
靜態
+關注
關注
1文章
29瀏覽量
14565 -
Qt
+關注
關注
1文章
307瀏覽量
37966
發布評論請先 登錄
相關推薦
評論