Warum kann ich mit meinem C++ Programm mit dem <filesystem> keine Iteration in einem anderen Laufwerk als C:\ durchführen?
Da ich gerade an einem kleinen Projekt sitze, muss ich herausfinden wie man in C++ durch eine Directory läuft und alle Namen der Files ausgibt. Mein Code funktioniert jedoch nur dann, wenn ich eine Directory auf dem C:\ Laufwerk durchgehe. Da ich aber durch eine Directory auf dem N:\ Laufwerk gehen muss, funktioniert die Schleife nicht mehr.
Einige Daten die vielleicht helfen:
- Das Programm liegt auch auf dem N:\ Laufwerk, aber kann trotzdem ohne Probleme eine Directory auf dem C:\ Laufwerk durchgehen.
- Hier ist der Code:
#include <iostream>
#include <string>
#include <filesystem>
using namespace std;
namespace fs = filesystem;
using namespace fs;
int main()
{
string test = "N:\\Arbeitsordner\\Tests\\Filesystem - Test\\Test - Datenbank";
for (auto& entry : directory_iterator(test))
{
cout << entry.path() << endl;
}
return 0;
}
- Eine Fehlermeldung kommt nicht, jedoch diese Meldung bevor die FOR-Schleife ausgeführt wird:
Ich hoffe jemand findet das Problem. Schon mal danke im Voraus.
2 Antworten
Versuch mal, den Pfad direkt zu erstellen und nicht implizit vom String zum Pfad zu casten.
Ansonsten sieht das Programm eigentlich korrekt aus.
Dann mach mal ein try-catch um den Code und lass dir die Exception rausschreiben, wenn das denn geht:
try{
//...
} catch(const std::exception& ex) {
std::cerr << ex.what() << std::endl;
throw;
}
return 0;
Es hat mir rausgeschrieben, dass der Pfad nicht gefunden werden konnte. Vielleicht hat grtgrt recht ich überprüfs mal.
Aber vielleicht liegt es auch daran, weil die Firma, bei der ich das Praktikums-Projekt mache, ihr Laufwerk gegen so etwas schützt.
Möglich, ja. Am besten nutzt du die Funktionen der Bibliothek um zu prüfen, ob das Verzeichnis existiert, ein Directory ist und du drüberiterieren darfst.
Der Grund ist einfach: Du verstehst offenbar deutlich zu wenig C++.
Das stimmt. Bin nähmlich währenddessen dabei C++ zu lernen. Eine Problemlösung hätte ich trotzdem gerne. Xddd
Lösung: Man kann Dateien auch über einen Pfad-Identifier adressieren, der mit einem Drive Letter beginnt. Du weißt das, aber du scheinst nicht zu wissen, dass der Wert, dem du deiner Variablen test gegeben hat, kein Pfad ist.
Das funktioniert leider nicht, aber trotzdem danke.👍