Ordner erstellen
-
Es geht um folgendes. Ich möchte ein Objekt in eine Datei schreiben. Wenn man einen Pfad angibt, bei dem Ordner vorkommen, die (noch) nicht existieren, solle diese erstellt werden. Wichtig ist, dass das ganze Platform-unabhängigkeit ist. Gibt es da eine einfache Möglichkeit?
template <class T> void Matrix<T>::write(const char* path) const { fstream f; f.open(path, ios::out); if (!f) { /* ... */ } f << *this; f.close(); }
-
Ramanujan schrieb:
Wenn man einen Pfad angibt, bei dem Ordner vorkommen, die (noch) nicht existieren, solle diese erstellt werden. Wichtig ist, dass das ganze Platform-unabhängigkeit ist. Gibt es da eine einfache Möglichkeit?
Ganz Allgemein: Nein, die Standardlibrary bietet afaik (noch) keine derartigen Möglichkeiten.
Schau dir z.B. mal Boost.Filesystem an.
-
Da es nur ein kleines, nicht notwendiges Feature sein soll, ist mir der Aufwand zu hoch, Boost zu installieren, auf wenn Boost sicher noch viele andere Nützlichkeiten bietet.
Gibt es ernsthaft keine Möglichkeit mit der Standardlibrary Ordner zu erstellen?
-
Nicht jede Plattform, auf der es C++ gibt, muss sowas wie "Ordner" überhaupt kennen. Daher ist sowas auch nicht Teil des Sprachstandards...
Verwend eben die jeweilige API der jeweiligen Plattform. Unter Windows wäre das z.B. CreateDirectory().
-
Dann kann ich auch mit "nicht jede Platform muss Dateien haben" argumentieren^^
Aber ich sag mal so: Wenn man einen Ordner erstellen könnte, weiß man immer noch nicht, wie man nun in der Ordnerstruktur navigiert, also z.B. ob Ornder durch "/" oder "\" getrennt sind.
Naja, dann muss man halt die Ordner vorher per Hand erstellen.
-
Ramanujan schrieb:
Dann kann ich auch mit "nicht jede Platform muss Dateien haben" argumentieren^^
Die Existenz von "Dateien" ist völlig unabhängig von "Ordnern". Ordner sind nur eine Möglichkeit wie Dateien in einem Dateisystem organisiert sein können...
Ramanujan schrieb:
Naja, dann muss man halt die Ordner vorher per Hand erstellen.
Oder eben du benutzt die entsprechende API des jeweiligen OS...