2012-02-25 7 views
-1

boost :: filesystemのバグは可能ですか?私はこのコードをコンパイルしようとすると

#include <boost/filesystem/path.hpp> 
#include <boost/filesystem/fstream.hpp> 

using namespace std; 

int main() 
{ 
    boost::filesystem3::path file_path("C:\\Users\\Art\\Desktop\\ASO.sln"); 
    boost::filesystem3::path new_path(file_path.begin(),file_path.end() - 1); 
    return 0; 
} 

を私はエラーを取得しています:

C:\Users\Me\boost_path\..\..\..\boost_148\include\boost-1_48\boost\filesystem\v3\path.hpp:163: error: no matching function for call to 'convert(const boost::filesystem3::path*, const boost::filesystem3::path*, boost::filesystem3::path::string_type&, const codecvt_type&)' 

なぜ?私はboost::filesystemにバグがあると仮定します。

+5

**常に**あなたの_your_コードにバグがあると仮定します。時折、あなたは間違っているでしょうが、通常それは正しいです。 –

+1

これらのファイルの代わりに '#include 'を使うのはどうでしょうか? –

+0

@daknøk:彼はすべてを含めることを望んでいないので。彼が 'directory_iterator'を使用していない場合、コンパイラの時間を無駄にするのはなぜですか? –

答えて

1

begin()end()イテレータはない文字イテレータです。彼らはディレクトリイテレータです;パス内のディレクトリを繰り返し処理します。これらのイテレータのは、ディレクトリを含むpathです。

したがって、他のpathのイテレーターからpathを構築することはできません。

+0

#ニコール、ありがとう – smallB

2

コードの2行目には、-1が必要ありません。以下はあなたが呼んでいるctorのコードです。 boost::filesystem::path

template <class InputIterator> 
    path(InputIterator begin, InputIterator end) 
    { 
     if (begin != end) 
     { 
     std::basic_string<typename std::iterator_traits<InputIterator>::value_type> 
      s(begin, end); 
     path_traits::convert(s.c_str(), s.c_str()+s.size(), m_pathname, codecvt()); 
     } 
    } 
+0

-1はそれとは関係ありません。 –

関連する問題