sé que con el especificador %s
formato y std::string
como esto conduce a un comportamiento indefinido:% s especificador de formato con el impulso :: formato y std :: string
std::string myString = "test";
printf("%s", myString);
Pero, ¿es salvar a utilizar 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 proporcionan una std::string
. ¿Podría esto conducir a UB también?
me puede faltar el punto, pero ¿por qué no paso std :: string.c_str()? –
Porque encontré muchas de esas llamadas en algún código heredado, y estoy tratando de decidir si necesito arreglarlo o no. También me gustaría saber cómo usar el especificador% s correctamente en el futuro. –