18 votes

Obtenir le séparateur de chemin de la plateforme en utilisant Boost.Filesystem

Existe-t-il un moyen d'obtenir le caractère séparateur de chemin de la plate-forme en utilisant la fonction Système de fichiers Boost ? Par séparateur de chemin, j'entends / pour Unix et \ pour Windows.

Je sais déjà que je peux utiliser boost::filesystem::path::operator/ pour concaténer deux chemins avec le caractère de séparation approprié. Mais je veux juste que l'un ou l'autre / o \ .

Je sais également que je peux utiliser #ifdef _WIN32 mais je préférerais que Boost.Filesystem m'indique le caractère séparateur approprié.

EDIT : Je veux utiliser version 3 de l'API Boost.Filesystem, telle qu'elle est utilisée dans Boost 1.48.

15voto

fhntv24 Points 324

Depuis la version 1.57, Boost dispose d'une meilleure solution, qui est simplement constante. char / wchar_t (en fonction des différentes plateformes) : boost::filesystem::path::preferred_separator .

Lire http://www.boost.org/doc/libs/release/libs/filesystem/doc/reference.html#Operating-system-examples pour plus d'informations. Il contient encore plus de fonctionnalités dépendantes du système.

Exemple simple :

#include <boost/filesystem.hpp>
#include <iostream>

int main() {
    std::cout << boost::filesystem::path::preferred_separator << std::endl;
}

14voto

Emile Cormier Points 13654

Il semble que boost::filesystem::path::make_preferred est le billet :

Effets : Le nom de chemin contenu est converti au format natif préféré. préféré. [Note : Sur Window par des barres obliques inverses. Sous POSIX, il n'y a pas d'effet. -- note de fin]

Ejemplo:

namespace bfs = boost::filesystem;
bfs::path slash("/");
bfs::path::string_type preferredSlash = slash.make_preferred().native();

1voto

sehe Points 123151

Je ne l'ai pas testé, mais il semble que vous devriez pouvoir l'utiliser sur un boost récent :

http://www.boost.org/doc/libs/1_43_0/libs/filesystem/doc/reference.html

#include <boost/filesystem.hpp>
#include <iostream>

int main() {
    std::cout << boost::filesystem::slash<boost::filesystem::path>::value << std::endl;
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X