我想使用Boost.Filesystem庫迭代目錄。boost文件系統::路徑構造函數std :: length_error
問題是,當我嘗試實例化一個路徑對象時,我得到一個std :: length_error消息「字符串太長」與任何長度的字符串,即使例如「pippo」。
我已經嘗試了所有的這些:
string s = "pippo";
path p(s);
path p(s.begin(), s.end());
path p(s.c_str());
path p("pippo");
我在與VC++ 10升壓預編譯的1.47版本的Windows 7。
謝謝你在前進, 盧卡
編輯
這是升壓代碼執行(path.hpp線129)
template <class Source>
path(Source const& source,
typename boost::enable_if<path_traits::is_pathable<
typename boost::decay<Source>::type> >::type* =0)
{
path_traits::dispatch(source, m_pathname, codecvt());
}
和錯誤是從(path_traits拋出.hpp line 174)
template <class U> inline
void dispatch(const std::string& c, U& to, const codecvt_type& cvt)
{
if (c.size())
convert(&*c.begin(), &*c.begin() + c.size(), to, cvt);
}
拋出的函數是「convert」。從調試器我看到兩個
&*c.begin()
和
&*c.begin() + c.size()
正確執行
這是你正在運行的確切代碼嗎? – CharlesB 2011-12-18 16:17:51
嘗試在調試器中運行,並確切地告訴我們錯誤來自哪裏(文件/行)。 – 2011-12-18 16:21:24
是的,這是確切的代碼。我用拋出的線更新了帖子。感謝您的幫助 – 2011-12-18 21:00:44