代码之家  ›  专栏  ›  技术社区  ›  DevSolar

boost::文件系统添加引号?

  •  5
  • DevSolar  · 技术社区  · 13 年前

    使用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 回复  |  直到 13 年前
        1
  •  6
  •   fredrik    13 年前

    这实际上是一个 bug 在1.47.0版本的Boost框架上提交。

    建议的解决方法是:

    std::cout << path("/foo/bar.txt").filename().string()
    
        2
  •  4
  •   Roger Rowland    13 年前

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

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

    编辑

    尽管,根据 this link ,您可以尝试以下操作:

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