Pregunta

Sé que el uso de la %s especificador de formato y std::string como esto conduce a un comportamiento indefinido:

std::string myString = "test";
printf("%s", myString);

Pero es guardar para usar el mismo especificador y un std::string con boost::format?

#include <boost/format.hpp>

int main() 
{
   std::string myString = "test";

   boost::format fmt("%s");
   fmt % myString;

   std::cout << fmt.str();

   return 0;
}

%s especifica un (const) char*, pero me ofrecen un std::string.Ello podría conducir a la UB también?

¿Fue útil?

Solución

Es seguro de usar %s con boost::format y std::string.En contraste con printf, el tipo de carácter en la cadena de formato "no imponer los argumentos de que se trate de un conjunto restringido de tipos, sino que simplemente establece los indicadores que están asociados con este tipo de especificaciones".

http://www.boost.org/doc/libs/1_49_0/libs/format/doc/format.html#printf_directives

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top