5

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) はこの点でバグがありますか? それらが追加されないようにする方法はありますか?

ドキュメントを熟読しましたが、チュートリアルの出力例にこれらの引用符が表示されていないことを除けば、私は啓発されていませんでした.

4

2 に答える 2

6

これは、実際にはバージョン 1.47.0 の Boost フレームワークで報告されたバグです。

提案された回避策は次のとおりです。

std::cout << path("/foo/bar.txt").filename().string()
于 2013-03-15T07:43:41.110 に答える
4

予期しない埋め込みスペースが関連するコードを混乱させるため、これは意図的なものです。あなたができる最善のことは、おそらく次のとおりです。

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

編集

ただし、このリンクによると、次のようなものを試すことができます。

std::cout << path("/foo/bar.txt").filename().string(); 
于 2013-03-15T07:38:41.060 に答える