tôi đang cố gắng lặp qua thư mục bằng cách sử dụng thư viện Boost.Filesystem.tăng hệ thống tập tin :: đường dẫn constructor std :: length_error
Vấn đề là khi tôi cố gắng khởi tạo đối tượng đường dẫn, tôi nhận được tiêu chuẩn :: length_error với thông báo "chuỗi quá dài" với các chuỗi có độ dài bất kỳ, ngay cả ví dụ "pippo".
Tôi đã thử tất cả các:
string s = "pippo";
path p(s);
path p(s.begin(), s.end());
path p(s.c_str());
path p("pippo");
Tôi đang trên windows 7 với tăng biên dịch sẵn phiên bản 1.47 cho vC++ 10.
Cảm ơn bạn trước, Luca
EDIT
này được mã tăng thực hiện (path.hpp dòng 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());
}
và lỗi được ném từ (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);
}
chức năng ném là "chuyển đổi". Từ debugger tôi thấy rằng cả hai
&*c.begin()
và
&*c.begin() + c.size()
được thực hiện một cách chính xác
Đây có phải là mã chính xác mà bạn đang chạy không? – CharlesB
Hãy thử chạy trong trình gỡ lỗi và cho chúng tôi biết chính xác lỗi xuất phát từ đâu (tệp/dòng). –
Có đây là mã chính xác. Tôi đã cập nhật bài đăng với dòng mà ném. Cảm ơn bạn đã trợ giúp –