Actualización: Conversión de "%xx" carácter ASCII en C++

Perdonad por el inciso, siguiendo con el otro artículo sobre el tema, ayer pensando sobre los manipuladores de streams de C++, recordé que hay uno que es capaz de leer y escribir hexadecimal, así que pensé que podía construir un stringstream que se encargara de esa conversión tan fea. Así, la función funk_formatter queda así:


string funk_formatter (const boost::iterator_range<string::const_iterator>& match)
{
int val;
std::stringstream strstrm;

strstrm << match;
strstrm.ignore(); // consumes '%'
strstrm >> hex >> val;

char cval = val;

return std::string(&cval,1);
}


Con el "único" inconveniente de tener que convertir el entero val a un carácter cval. Esto es así porque el operador >> sólo lee un carácter si se está leyendo un carácter (aunque el manejador hex pueda suponer que para construir un carácter hace falta más de uno). ¿Bug? No lo sé, pero la conversión hay que hacerla de una u otra manera, ya que si no, no se puede construir el std::string devuelto.

blog comments powered by Disqus