C++: Problem beim Versuch string in const char* zu konvertieren?
Hallo,
ich versuche mit der Bibliothek libgeotiff Werte aus mehreren Bilddaten im Format .tif zu extrahieren. Ich nutze c++ und möchte die Standardbibliothek filesystem nutzen. Ich habe bisher folgenden Code:
const char* path;
path = "C:\\Projekte\\Geotiffs";
std::filesystem::path p(path);
for (const auto& entry : std::filesystem::directory_iterator(p)) {
auto filename = entry.path().filename().string();
if (entry.is_regular_file()) {
TIFF* tif = XTIFFOpen(filename.c_str(), "r");
Leider bekomme ich die Meldung
TIFFOpen: Image1.tif: Cannot open.
Die Funktion XTIFFOpen() erwartet als ersten Parameter ein const char*.
Wenn ich bei filename das .string() (und damit das c_str()) rausnehme bekomme ich die Fehlermeldung das der Compiler std::filesystem::path nicht in const char* konvertieren kann.
Daher hatte ich die Idee filename als string zu speichern und beim Aufruf mit c_str() wieder in char* zu konvertieren. Aber scheinbar klappt etwas bei der Konvertierung nicht. Kennt jemand weitere Möglichkeiten von std::filesystem::path in char* zu konvertieren?
Grüße
2 Antworten
filename = entry.path().filename().string();
filename ist nur der Dateiname und würde dann auf das Arbeitsverzeichnis bezogen. Sicher, daß Du das so willst?
Vielleicht solltest Du auf filename() verzichten, dann müßte das IMHO gemäß Doku hinkommen.
Notfalls lass Dir das mal ausgeben, für den Fall der Fälle.
Ohjee klar, XTiffOpen() braucht nicht nur den Dateinamen sondern natürlich auch den Pfad wo es liegt. Manchmal sieht man solche Kleinigkeiten nicht. Ich habe filename() weggelassen und jetzt geht's. Danke dir
TIFF open scheint den richtigen Parameter zu bekommen aber die Datei ist entweder nicht am richtigen Ort oder nicht lesbar.
Mit c_str machst Du schon alles richtig.