Estoy tratando de iterar sobre un directorio usando la biblioteca Boost.Filesystem.boost filesystem :: path constructor std :: length_error
El problema es que cuando intento crear una instancia de un objeto de ruta, obtengo un std :: length_error con el mensaje "string too long" con cadenas de cualquier longitud, incluso por ejemplo "pippo".
Ya he probado todos ellos:
string s = "pippo";
path p(s);
path p(s.begin(), s.end());
path p(s.c_str());
path p("pippo");
estoy en Windows 7 con impulso precompiled versión 1.47 para VC++ 10.
gracias de antemano, Luca
EDITAR
esto se ejecuta el código de impulso (línea 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());
}
y el error es lanzado desde (path_traits .hpp línea 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 función que arroja es "convertir". Desde el depurador vi que tanto
&*c.begin()
y
&*c.begin() + c.size()
se ejecutan correctamente
¿Es este el código exacto que está ejecutando? – CharlesB
Intenta ejecutar en un depurador y dinos exactamente de dónde viene el error (archivo/línea). –
Sí, este es el código exacto. Actualicé la publicación con la línea que arroja. Gracias por su ayuda –