Question

J'ai un fichier qui décrit les données d'entrée, qui est divisée en plusieurs autres fichiers. Dans mon fichier descripteur, je donne d'abord le chemin qui indique où tous les autres fichiers se trouvent.

L'initiateur peut créer soit un rapport (à l'emplacement du fichier descripteur) ou chemin absolu.

Quand mon programme est appelé, l'utilisateur donne le nom du fichier descripteur. Il ne peut pas être dans le répertoire de travail courant, de sorte que le nom de fichier B donné peut également contenir des répertoires.

Pour mon programme toujours trouver les fichiers d'entrée aux bons endroits, je dois combiner ces informations. Si le chemin donnée est absolue, je dois juste que l'un. Si elle est relative, je dois concaténer au chemin B (à savoir la partie du répertoire du nom de fichier).

Je pensais que boost::filesystem::complete peut faire le travail pour moi. Malheureusement, il semble que ce n'est pas. Je ne comprends pas non plus comment tester wether un chemin donné est absolu ou non.

Toutes les idées?

Était-ce utile?

La solution

En fait, j'ai été très mal conseillé d'abord, mais maintenant trouvé moi-même la solution. Lorsque "base" contient le chemin A, et le nom de fichier contient B:

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

Il fonctionne avec Linux au moins (où il serait très facile de le faire sans coup de pouce, mais bon ..), ont encore à tester avec Windows.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top