我将一些可执行文件的路径存储在boost :: filesystem :: path中。 当我尝试将其与标准的boost函数(如create_directory)一起使用时,我看不到任何效果。 当我打印存储在boost :: filesystem :: path中的值时,我只得到第一个字符。
const std::string path("c:\\test\\file");
boost::filesystem::path p(path);
printf("%s\n", p.c_str());
我希望在控制台中看到“ c:\ test \ file”,但只会得到“ c”。
在Linux上,此代码可以按预期完美运行。在Windows上,我有上述行为。问题的根源是什么?
ps。 boost库的版本是1.70
答案 0 :(得分:1)
为了在std :: wstring跨平台上获取std :: string,您可以使用boost :: fileystem :: path :: string()而不是c_str():
const std::string path("c:\\test\\file");
boost::filesystem::path p(path);
std::cout << p.string();
答案 1 :(得分:0)
除了 @StPiere 的答案(由于声誉不足,我无法评论),这不是强制性的
std::cout
即使
boost::fileystem::path::string()
您只需将问题中的代码更改为:
const std::string path("c:\\test\\file");
boost::filesystem::path p(path);
printf("%s\n", p.string().c_str());