Obtenga el separador de ruta de la plataforma utilizando boost.filesystem
-
28-10-2019 - |
Pregunta
¿Hay alguna forma de obtener el carácter del separador de ruta de la plataforma utilizando Boost.filesystem? Por separador de ruta, quiero decir /
para unix y \
para ventanas.
Ya sé que puedo usar boost::filesystem::path::operator/
para concatenar dos rutas junto con el carácter del separador apropiado. Pero yo solo quiero /
o \
.
También sé que puedo usar #ifdef _WIN32
, pero preferiría que Boost.filesystem me diga el carácter del separador apropiado.
Editar: quiero usar Versión 3 de la API del sistema de archivos, como se usa en Boost 1.48.
Solución
A partir de la versión 1.57, Boost ahora tiene una mejor solución, eso es simplemente constante char
/ wchar_t
(Dependiente de diferentes plataformas): boost::filesystem::path::preferred_separator
.
Leer http://www.boost.org/doc/libs/release/libs/filesystem/doc/reference.html#operating-system-examples para más información. Hay aún más características dependientes del sistema.
Ejemplo simple:
#include <boost/filesystem.hpp>
#include <iostream>
int main() {
std::cout << boost::filesystem::path::preferred_separator << std::endl;
}
Otros consejos
Parece que boost::filesystem::path::make_preferred
es el boleto:
Efectos: El nombre de ruta contenido se convierte en el formato nativo preferido. [Nota: en Windows, el efecto es reemplazar las cortes con barras de retroceso. En Posix, no hay efecto. - Nota final
Ejemplo:
namespace bfs = boost::filesystem;
bfs::path slash("/");
bfs::path::string_type preferredSlash = slash.make_preferred().native();
No he probado esto, pero parece que debería poder usar esto en un impulso reciente:
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;
}