Comment utiliser boost::filesystem::path
pour spécifier un chemin relatif sous Windows? Cette tentative échoue:
boost:filesystem::path full_path("../asset/toolbox"); // invalid path or directory.
Peut-être pour m'aider à déboguer, comment obtenir le répertoire de travail actuel avec boost :: filesystem?
getcwd = boost::filesystem::path full_path(boost::filesystem::current_path());
Exemple:
boost::filesystem::path full_path(boost::filesystem::current_path());
std::cout << "Current path is : " << full_path << std::endl;
Pour accéder à current_path
, il faut ajouter #include <boost/filesystem.hpp>
.
Essayez la fonction system_complete
.
namespace fs = boost::filesystem;
fs::path full_path = fs::system_complete("../asset/toolbox");
Cela imite exactement comment le système d'exploitation lui-même résoudrait les chemins relatifs.
Si vous voulez changer de répertoire, essayez quelque chose comme ceci:
boost::filesystem::path full_path( boost::filesystem::current_path() );
std::cout << "Current path is : " << full_path << std::endl;
//system("cd ../"); // change to previous dir -- this is NOT working
chdir("../"); // change to previous dir -- this IS working
boost::filesystem::path new_full_path( boost::filesystem::current_path() );
std::cout << "Current path is : " << new_full_path << std::endl;
Lorsque vous tapez "../your/path", ne spécifiez-vous pas un chemin semblable à Unix? Je pense que ce que vous devriez faire pour obtenir des chemins spécifiques au système est:
boost:filesystem::path full_path(".." / "asset" / "toolbox");
Dans ce cas, le '/' est un opérateur concaténant des chemins de manière spécifique au système et ne fait pas partie du chemin que vous spécifiez.