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 его поведения (и для чуть более детального описания их различий).

Другие вопросы по тегам