C++ 相当于PathAppend的Qt?
是一个有用的winapi函数,允许您将一个路径附加到另一个路径,同时处理任何后续反斜杠(或缺少它们) 这意味着将C++ 相当于PathAppend的Qt?,c++,qt,C++,Qt,是一个有用的winapi函数,允许您将一个路径附加到另一个路径,同时处理任何后续反斜杠(或缺少它们) 这意味着将“/dir1”附加到“dir2”,或“/dir1”附加到“/dir2”,或“/dir1/”附加到“/dir2”,将产生相同的(正确的)结果-“/dir1/dir2”(而简单的具体化将分别产生“/dir1dir2”,”/dir1/dir2>),以及“/dir1//dir2”) 有没有做类似事情的Qt函数?没有这个函数,但是QDir::cleanPath()将处理您需要的所有事情,您只需连
“/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(),它具有解析路径。如果您需要简单地将两个简单路径连接起来作为读/写函数的输入,那么您可能会非常喜欢连接。如果您将使用计算路径进行其他操作,或者相关部分更复杂,那么您最好也对其进行规范化/清理(老实说,在调试时也是为了您自己的缘故…)