C++ 相当于PathAppend的Qt?

C++ 相当于PathAppend的Qt?,c++,qt,C++,Qt,是一个有用的winapi函数,允许您将一个路径附加到另一个路径,同时处理任何后续反斜杠(或缺少它们) 这意味着将“/dir1”附加到“dir2”,或“/dir1”附加到“/dir2”,或“/dir1/”附加到“/dir2”,将产生相同的(正确的)结果-“/dir1/dir2”(而简单的具体化将分别产生“/dir1dir2”,”/dir1/dir2>),以及“/dir1//dir2”) 有没有做类似事情的Qt函数?没有这个函数,但是QDir::cleanPath()将处理您需要的所有事情,您只需连

是一个有用的winapi函数,允许您将一个路径附加到另一个路径,同时处理任何后续反斜杠(或缺少它们)

这意味着将
“/dir1”
附加到
“dir2”
,或
“/dir1”
附加到
“/dir2”
,或
“/dir1/”
附加到
“/dir2”
,将产生相同的(正确的)结果-
“/dir1/dir2”
(而简单的具体化将分别产生
“/dir1dir2”
”/dir1/dir2>)
,以及
“/dir1//dir2”


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

没有这个函数,但是
QDir::cleanPath()
将处理您需要的所有事情,您只需连接路径:

QString appendPath(const QString& path1, const QString& path2)
{
    return QDir::cleanPath(path1 + QDir::separator() + path2);
}
我使用了
QDir::separator()
而不是原始的“/”,但这不是强制性的,因为QT在内部将该分隔符转换为本机分隔符(如果需要,请参阅)


请注意(对于具有.NET背景的用户)还有另一个类似的函数:
Path.Combine()
,它的行为与
PathAppend()
类似,但有所不同。有关其行为的QT模拟(以及它们之间的差异的更详细的概述),请参阅。

可能重复的可能重复的感谢,但这两个问题的大多数答案都是关于使用本机分隔符的,这不是我在这里要问的。我后来意识到,我知道的所有操作系统都支持多个斜杠。因此
///usr///bin
C:///Program Files
C:\\\\\\\\\\\/\Program Files
,甚至
C:\\\\\\/\Program Files
都能正确解析。因此,您可以毫不畏惧地连接
path1+“/”+path2
。@sashoalm是的,对大多数操作系统来说,双倍不是问题,但cleanPath()的作用远不止于此(另请参阅链接文章)。要模拟PathAppend(),它具有解析路径。如果您需要简单地将两个简单路径连接起来作为读/写函数的输入,那么您可能会非常喜欢连接。如果您将使用计算路径进行其他操作,或者相关部分更复杂,那么您最好也对其进行规范化/清理(老实说,在调试时也是为了您自己的缘故…)