boost :: filesystem添加引号?

时间:2013-03-15 07:32:26

标签: c++ boost boost-filesystem

使用boost_filesystem时,Boost会不断为文件名添加引号。

Foo.cpp中:

#include <iostream>
#include <boost/filesystem.hpp>

int main( int argc, char * argv[] )
{
    std::cout << argv[0] << std::endl;
    boost::filesystem::path p( argv[0] );
    std::cout << p << std::endl;
    std::cout << p.filename() << std::endl;
    return 0;
}

编译:

g++ foo.cpp -o foo -lboost_filesystem -lboost_system

输出:

./foo
"./foo"
"foo"

这有些出乎意料,在我的情况下不方便。这是真的故意,还是我在这方面有点老版本的Boost(1.46.1)车?有什么方法可以避免添加它们吗?

我仔细阅读了文档,但除了教程在他们的示例输出中显示那些引号外,我没有开悟。

2 个答案:

答案 0 :(得分:6)

这实际上是版本1.47.0上Boost框架上提交的bug

建议的解决方法是:

std::cout << path("/foo/bar.txt").filename().string()

答案 1 :(得分:4)

这是故意的,因为意外的嵌入空间和混淆相关的代码。你能做的最好的可能是:

boost::replace_all(yourquotedstring, "\"", "");

修改

虽然根据this link,您可以尝试类似:

std::cout << path("/foo/bar.txt").filename().string();