boost :: filesystem :: path仅给出第一个字符

时间:2019-05-12 10:04:10

标签: c++ windows boost

我将一些可执行文件的路径存储在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

2 个答案:

答案 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());