Hallo, ich habe derzeit ein Programm, das einen vollständigen Pfad des Speicherorts einer Datei abruft und in eine Variable eingefügt wird, die den Typ: boost :: filesystem2 :: path hat
Ich habe nachgeschlagen, wie das geht, und festgestellt, dass mit:
string result1 = boost::filesystem::basename (myPath)
konvertiert den Pfad in eine Zeichenfolge, konvertiert jedoch nur den Dateinamen (z. B. wenn der Pfad "C: \ name \ bobsAwesomeWordDoc.docx" lautet, wird nur "bobsAwesomeWordDoc" zurückgegeben).
Ich habe Folgendes zum Konvertieren des gesamten Pfads in einen String gefunden, weiß jedoch nicht, wie ich ihn in meinem Programm implementieren soll. Ich habe mehrere Möglichkeiten ausprobiert, erhalte jedoch Konvertierungsfehler.
const std :: string & string (): Diese Routine gibt eine Kopie der Zeichenfolge zurück, mit der der Pfad initialisiert wurde, wobei die Formatierung gemäß den Pfadgrammatikregeln erfolgt.
( hier gefunden )
Ich habe versucht:
string result1 = string& (myPath);
und ein paar andere Variationen.
u8string()
, aber das hilft nicht, wostring()
automatisch verwendet wird.Ich glaube, Sie müssen ein wenig mehr tun, als nur den Pfad in einen String umzuwandeln. Sie sollten zuerst die kanonische Version des Pfads erhalten - einen absoluten Pfad ohne symbolische Verknüpfungselemente - und diesen in einen String umwandeln :
PS: Ich programmiere seit Ewigkeiten mit Boost und konnte diese Informationen in den Dokumenten nicht leicht finden.
Update (Okt 2017)
Dokumentation: boost :: filesystem :: canonical .
Beachten Sie jedoch, dass es ab C ++ 17 std :: filesystem mit Canonical und vielem mehr gibt.
quelle
canonize
, was gemäß Ihrem zweiten Link veraltet ist, abercanonical
nicht zu sein scheint (gemäß Ihrem ersten Link für 1_48 V3). Jetzt in C ++ 17 haben wirstd::filesystem
natürlichDies funktionierte in wxWidgets: (Ich weiß, ich sollte nur die wx-Dienstprogramme verwenden, aber es ist ein Test)
quelle
Anrufen
myPath.generic_string()
wird tun, was Sie brauchen.quelle
Mach das
path.c_str();
Es sollte dir gut gehen.
quelle