Frage

Ich habe eine Datei, die Eingabedaten beschreibt, die Aufteilung in mehrere andere Dateien ist. In meinem Deskriptordatei, gebe ich zuerst den Pfad A , das sagt, wo alle anderen Dateien gefunden werden.

Der Urheber kann entweder eine relative gesetzt (zum Ort der Deskriptordatei) oder absoluten Pfad.

Wenn mein Programm aufgerufen wird, gibt der Benutzer den Namen der Beschreibungsdatei. Es kann nicht im aktuellen Arbeitsverzeichnis sein, so dass der Dateiname B angegeben auch Verzeichnisse enthalten.

Für mein Programm immer die Eingabedateien an den richtigen Stellen finden, muß ich diese Informationen kombinieren. Wenn der Pfad A gegeben absolut ist, muss ich nur, dass ein. Wenn es relativ ist, muss ich es auf den Weg verketten B (d Verzeichnis Teil des Dateinamens).

Ich dachte, boost::filesystem::complete kann für mich die Arbeit machen. Leider scheint es es nicht ist. Ich habe auch nicht verstehen, wie man Test, ob ein Pfad absolut gegeben ist oder nicht.

Irgendwelche Ideen?

War es hilfreich?

Lösung

Eigentlich war ich ganz zuerst verfehlt aber fand jetzt die Lösung selbst. Wenn „Basis“ hält den Pfad A, und die Dateinamen halten B:

boost::filesystem::path basepath(base), filepath(filename);
if (!basepath.is_complete())
    basepath = filepath.remove_leaf() /= basepath;
base = basepath.string();

Es arbeitet mit Linux zumindest (wo wäre es sehr einfach, ohne Auftrieb zu tun, aber naja ..), hat noch zu Test unter Windows.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top