我正在尝试使用 Boost.Filesystem 库遍历目录。
问题是当我尝试实例化一个路径对象时,我得到一个 std::length_error 消息“字符串太长”,其中包含任何长度的字符串,甚至例如“pippo”。
我已经尝试了所有这些:
string s = "pippo";
path p(s);
path p(s.begin(), s.end());
path p(s.c_str());
path p("pippo");
我在 Windows 7 上使用 vc++10 的 boost 预编译版本 1.47。
提前谢谢你,卢卡
编辑
这是执行的升压代码(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);
}
抛出的函数是“转换”。从调试器我看到两者
&*c.begin()
和
&*c.begin() + c.size()
被正确执行