Qt эквивалент PathAppend?
PathAppend - это полезная функция winapi, которая позволяет вам добавлять один путь к другому, заботясь о любых обратных косых чертах (или их отсутствии).
Это означает, что добавление "/dir1"
в "dir2"
, или же "/dir1"
в "/dir2"
, или же "/dir1/"
в "/dir2"
даст тот же (правильный) результат - "/dir1/dir2"
(в то время как простая конкатенация даст соответственно "/dir1dir2"
, "/dir1/dir2"
, а также "/dir1//dir2"
).
Есть ли функция Qt, которая делает подобное?
1 ответ
Там не та функция, но QDir::cleanPath()
будет обрабатывать все, что вам нужно, вам просто нужно объединить пути:
QString appendPath(const QString& path1, const QString& path2)
{
return QDir::cleanPath(path1 + QDir::separator() + path2);
}
я использовал QDir::separator()
вместо необработанного "/", но это не обязательно, потому что QT внутренне переводит этот разделитель в собственный (при необходимости, смотрите Кроссплатформенный способ построения пути FS с Qt).
Обратите внимание, что (для кого с.NET фоном) есть еще одна похожая функция: Path.Combine()
, он ведет себя как-то похоже на PathAppend()
но это другое. См. Есть ли QPath::Combine()? для эмуляции QT его поведения (и для чуть более детального описания их различий).