QDir拼接路径解决各种\\//斜杠问题

来源:DS小龙哥-嵌入式技术 发布日期:2023-05-24 12:37:31


(相关资料图)

一般在项目中经常需要组合路径,与其他程序进行相互调用传递消息通信。 经常可能因为多加斜杠、少加斜杠等问题导致很多问题。 为了解决这些问题,我们可以使用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对象调用。审核编辑:汤梓红

关键词:
x 广告
财务 报告
x 广告

Copyright @  2015-2022 中国科技先生网版权所有  备案号: 沪ICP备2022005074号-4   联系邮箱:58 55 97 3@qq.com