16

PathAppend是一个有用的 winapi 函数,可让您在处理任何尾随反斜杠(或缺少反斜杠)的同时将一条路径附加到另一条路径。

这意味着附加"/dir1""dir2"、 或或"/dir1"将产生相同(正确)的结果 - (而简单地连接将分别产生、和)。"/dir2""/dir1/""/dir2""/dir1/dir2""/dir1dir2""/dir1/dir2""/dir1//dir2"

有没有做类似事情的 Qt 函数?

4

1 回答 1

27

没有那个功能,但QDir::cleanPath()会处理你需要的一切,你只需要连接路径:

QString appendPath(const QString& path1, const QString& path2)
{
    return QDir::cleanPath(path1 + QDir::separator() + path2);
}

我使用QDir::separator()了原始“/”而不是原始“/”,但这不是强制性的,因为 QT 在内部将该分隔符转换为本机分隔符(如果需要,请参阅使用 Qt 构建 FS 路径的跨平台方式)。

请注意(对于具有 .NET 背景的人)还有另一个类似的功能: ,它的行为在Path.Combine()某种程度上类似于PathAppend()但它不同。请参阅是否有 QPath::Combine()?对于其行为的 QT仿真(以及稍微更详细地概述它们的差异)。

于 2012-10-22T15:12:04.570 回答