Hat C ++ eine Entsprechung zur Python-Funktion os.path.join
? Grundsätzlich suche ich nach etwas, das zwei (oder mehr) Teile eines Dateipfads kombiniert, damit Sie sich nicht darum kümmern müssen, dass die beiden Teile perfekt zusammenpassen. Wenn es in Qt ist, wäre das auch cool.
Grundsätzlich habe ich eine Stunde damit verbracht, Code zu debuggen, und zumindest ein Teil davon lag daran root + filename
musste root/ + filename
, und ich versuche, dies in Zukunft zu vermeiden.
complete
)Antworten:
Schauen Sie sich dazu QDir an:
quelle
Nur als Teil der Boost.Filesystem- Bibliothek. Hier ist ein Beispiel:
Hier ist ein Beispiel für das Kompilieren und Ausführen (plattformspezifisch):
quelle
Ähnlich wie bei der Antwort von @ user405725 (jedoch ohne Boost) und von @ildjarn in einem Kommentar erwähnt, ist diese Funktionalität als Teil des std :: -Dateisystems verfügbar . Der folgende Code wird mit Homebrew GCC 9.2.0_1 und dem Flag kompiliert
--std=c++17
:quelle
Zumindest unter Unix / Linux ist es immer sicher, Teile eines Pfads zu verknüpfen
/
, auch wenn einige Teile des Pfads bereits enden/
, dhroot/path
gleichbedeutend mitroot//path
.In diesem Fall müssen Sie sich nur noch anschließen
/
. Trotzdem stimme ich anderen Antworten zu,boost::filesystem
die eine gute Wahl sind, wenn sie Ihnen zur Verfügung stehen, da sie mehrere Plattformen unterstützen.quelle
Wenn Sie dies mit Qt tun möchten, können Sie den
QFileInfo
Konstruktor verwenden:quelle
Mit C ++ 11 und Qt können Sie dies tun:
Verwendung:
quelle
Verwenden Sie
/
in Qt nur Code, wenn Sie die Qt-API (QFile
,QFileInfo
) verwenden. Es wird auf allen Plattformen das Richtige tun. Wenn Sie einen Pfad an eine Nicht-Qt-Funktion übergeben müssen oder ihn formatieren möchten, um ihn dem Benutzer anzuzeigen, verwenden SieQDir:toNativeSeparators()
z.Es wird
/
durch das native Äquivalent ersetzt (dh\
unter Windows). Die andere Richtung erfolgt überQDir::fromNativeSeparators()
.quelle