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

描述

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

  审核编辑:汤梓红

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分