El uso de %s especificador de formato con boost::formato y std::string
-
12-12-2019 - |
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?
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