一般在項目中經常需要組合路徑,與其他程序進行相互調用傳遞消息通信。 經??赡芤驗槎嗉有备?、少加斜杠等問題導致很多問題。 為了解決這些問題,我們可以使用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文章
596瀏覽量
23166 -
靜態
+關注
關注
1文章
30瀏覽量
14840 -
Qt
+關注
關注
2文章
320瀏覽量
40889
發布評論請先 登錄
QDir拼接路徑解決各種\\//斜杠問題
評論