Qt相当于PathAppend?

时间:2012-10-22 15:00:02

标签: c++ qt

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

意味着将"/dir1"追加到"dir2",或"/dir1"追加"/dir2",或"/dir1/"追加"/dir2"会产生相同的(正确的)结果 - "/dir1/dir2"(虽然简单的连接会分别产生"/dir1dir2""/dir1/dir2""/dir1//dir2")。

是否有任何类似的Qt功能?

1 个答案:

答案 0 :(得分:17)

没有该功能,但QDir::cleanPath()将处理您需要的所有内容,您只需连接路径:

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

我使用QDir::separator()而不是原始的“/”,但它不是强制性的,因为QT会在内部将该分隔符转换为原生分隔符(如果需要,请参阅Cross-platform way of constructing an FS path with Qt)。

请注意(对于具有.NET背景的人),还有另一个类似的功能:Path.Combine(),它的表现方式类似PathAppend(),但它有所不同。有关其行为的QT 仿真,请参阅Is there a QPath::Combine()?(有关其差异的更详细的概述)。