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