Próbuję iterować nad katalogiem przy użyciu biblioteki Boost.Filesystem.boost filesystem :: konstruktor ścieżek std :: length_error
Problem polega na tym, że gdy próbuję utworzyć instancję obiektu ścieżki, otrzymuję std :: length_error z komunikatem "string too long" z ciągami o dowolnej długości, nawet na przykład "pippo".
Próbowałem już wszystkich z nich:
string s = "pippo";
path p(s);
path p(s.begin(), s.end());
path p(s.c_str());
path p("pippo");
Jestem na Windows 7 z doładowania prekompilowana wersji 1.47 dla VC++ 10.
Dziękuję z góry, Luca
EDIT
ten jest wykonywany kod doładowania (linia 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());
}
a błąd jest wyrzucany z (path_traits linia .hpp 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);
}
Funkcja, która wyrzuca, to "konwertuj". Z debuggera widziałem, że zarówno
&*c.begin()
i
&*c.begin() + c.size()
są prawidłowo wykonywane
Czy to jest dokładny kod, który używasz? – CharlesB
Spróbuj uruchomić w debugerze i powiedz nam dokładnie, skąd pochodzi błąd (plik/linia). –
Tak, to jest dokładny kod. Zaktualizowałem post z linią, która rzuca. Dziękujemy za pomoc –