Obtenir le séparateur de chemin de plate-forme à l'aide Boost.Filesystem
-
28-10-2019 - |
Question
Y at-il un moyen d'obtenir le caractère de séparateur de chemin de la plate-forme en utilisant Boost.Filesystem ? Par séparateur de chemin, je /
moyenne pour Unix et \
pour Windows.
Je sais déjà que je peux utiliser boost::filesystem::path::operator/
pour concaténer deux chemins ainsi que le caractère de séparation approprié. Mais je veux juste soit /
ou \
.
Je sais aussi que je peux utiliser #ifdef _WIN32
, mais je préférerais que Boost.Filesystem me dire le caractère de séparation approprié.
EDIT: Je veux utiliser la version 3 de l'API Boost.Filesystem, tel qu'il est utilisé dans Boost 1,48 .
La solution
de la version 1.57, Boost a maintenant une meilleure solution, qui est juste char
/ wchar_t
constant (en fonction de différentes plates-formes). boost::filesystem::path::preferred_separator
Lire http: //www.boost. org / doc / libs / release / libs / système de fichiers / doc / reference.html #-système d'exploitation exemples pour plus d'informations. Il y a encore plus de fonctionnalités dépendantes du système en elle.
Exemple simple:
#include <boost/filesystem.hpp>
#include <iostream>
int main() {
std::cout << boost::filesystem::path::preferred_separator << std::endl;
}
Autres conseils
Il semble que boost::filesystem::path::make_preferred
est le ticket:
Effets: Le contenu est converti chemin au natif préféré format. [Note: Sous Windows, l'effet est de remplacer les barres obliques avec antislashs. Sur Posix, il n'y a pas d'effet. - Note de fin]
Exemple:
namespace bfs = boost::filesystem;
bfs::path slash("/");
bfs::path::string_type preferredSlash = slash.make_preferred().native();
ai pas testé, mais il semble que vous devriez pouvoir l'utiliser sur un coup de pouce récent:
http://www.boost.org/ doc / libs / 1_43_0 / libs / système de fichiers / doc / reference.html
#include <boost/filesystem.hpp>
#include <iostream>
int main() {
std::cout << boost::filesystem::slash<boost::filesystem::path>::value << std::endl;
}