0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

DS小龙哥-嵌入式技术 来源:DS小龙哥-嵌入式技术 作者:DS小龙哥-嵌入式技 2023-05-24 10:58 次阅读

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

    文章

    552

    浏览量

    20132
  • 静态
    +关注

    关注

    1

    文章

    27

    浏览量

    14481
  • Qt
    Qt
    +关注

    关注

    1

    文章

    299

    浏览量

    37340
收藏 人收藏

    评论

    相关推荐

    1602如何显示斜杠,不是反斜杠

    本帖最后由 eehome 于 2013-1-5 10:10 编辑 1602如何显示斜杠,不是反斜杠{:4_95:}
    发表于 12-11 19:42

    图像拼接

    简单的labview图像拼接程序
    发表于 05-15 23:19

    为什么我接收串口发送的数据时总有反斜杠的出现?

    `为什么我接收串口发送的数据时总有反斜杠的出现,如图,怎样去掉这个反斜杠?求指导!!!`
    发表于 10-20 23:29

    这个位置的斜杠是什么意思

    `这个位置的斜杠是什么意思`
    发表于 11-22 19:16

    斜杠“\”的编译器错误

    使用Galileo上的Linux计算机检查电子邮件。基本上,我使用以下linux命令来检查我已设置的此电子邮件帐户上的电子邮件数量。但是,编译器似乎不喜欢反斜杠“\”并继续给出错误(反斜杠
    发表于 10-11 16:56

    cob拼接屏厂家

    本文作者:深圳大元拼接屏有几种,led显示屏就是其中之一。cob显示屏作为led显示屏系列之一产品,拼接出来的显示屏,显示画面更加清晰、细腻,色彩更加柔和、靓丽。cob拼接屏厂家--深圳大元
    发表于 06-24 16:26

    玩转iPhone:iPhone各种文件路径详解

    玩转iPhone:iPhone各种文件路径详解 很多iPhone初级玩家对错综复杂的iPhone文件路径和文件夹一筹莫展,权限设置和文件管理更是无从下
    发表于 04-07 09:17 459次阅读

    不同的系统中路径的分隔符分析

    在不同的系统中,路径的分隔符不同,故需要做出判断,并切换分隔符; String类中replaceAll方法如下: String.replaceAll(String regex,String
    的头像 发表于 12-07 17:11 4124次阅读

    oled拼接屏与液晶拼接屏的区别

    oled拼接屏最大的特点是可弯曲,所以能拼接成弧形、圆形、异形等,而液晶拼接屏只能横、竖拼接
    发表于 04-30 15:45 2494次阅读

    拼接屏怎么实现拼接_拼接屏安装教程

    液晶拼接屏是一种具有可拼接性,可组成一个大面积显示区域的大屏幕产品,广泛应用于各种大屏需求场合,如会议、展示、监控指挥中心等领域,可以实现单屏、全屏、分割、画面跨屏漫游等多种显示方式,下面就为您介绍一下液晶
    的头像 发表于 08-06 11:24 2.1w次阅读

    液晶拼接屏的三种拼接方法

    液晶拼接屏多见的有外拖拼接操控器式、嵌入式以及PCI插卡式这三种拼接办法。
    发表于 09-10 15:09 7298次阅读

    Java中反斜杠有哪些用法

    在字符常量中,反斜杠(\)是一个特殊的字符,被称为转义字符,它的作用是用来转义后面一个字符。(\\)表示要插入一个正则表达式的反斜线,其后的字符具有特殊意义。
    的头像 发表于 02-06 17:08 1314次阅读

    C 语言的头文件路径位置问题

    的朋友们来说,一些系统的库文件路径根本就不知道在什么地方。 所以本文我们就来聊一下 C 语言的头文件路径相关的问题 ,包括系统路径位置,绝对路径与相对
    的头像 发表于 06-22 10:05 4150次阅读
    C 语言的头文件<b class='flag-5'>路径</b>位置问题

    分享液晶拼接屏常见故障的解决技巧

    液晶拼接屏作为一种高端的显示设备,被广泛应用于各种行业。然而,在使用过程中,液晶拼接屏可能会出现各种故障。
    的头像 发表于 11-23 15:26 864次阅读

    LCD拼接屏自拼接设置方法指南

    一、引言  LCD拼接屏作为一种先进的显示设备,广泛应用于各种场合,如会议厅、展览馆、商场等。然而,对于初次接触LCD拼接屏的用户来说,如何正确地进行拼接设置可能是一个难题。小编将详细
    的头像 发表于 02-28 10:26 231次阅读