sto provando ad eseguire iterazioni su una directory utilizzando la libreria Boost.Filesystem.boost filesystem :: percorso costruttore std :: length_error
Il problema è che quando provo a istanziare un oggetto percorso, ottengo uno std :: length_error con il messaggio "stringa troppo lunga" con stringhe di qualsiasi lunghezza, anche per esempio "pippo".
Ho già provato tutti questi:
string s = "pippo";
path p(s);
path p(s.begin(), s.end());
path p(s.c_str());
path p("pippo");
Sono in Windows 7 con spinta precompilata versione 1.47 per VC++ 10.
Grazie in anticipo, Luca
EDIT
questo è il codice eseguito spinta (linea 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());
}
e l'errore viene generato da (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);
}
la funzione che lancia è "convert". Dal debugger ho visto che entrambi
&*c.begin()
e
&*c.begin() + c.size()
vengono eseguiti correttamente
È questo il codice esatto che stai utilizzando? – CharlesB
Provare a eseguire in un debugger e dirci esattamente da dove proviene l'errore (file/riga). –
Sì, questo è il codice esatto. Ho aggiornato il post con la linea che lancia. Grazie per l'aiuto –