wiem, że przy użyciu specyfikatora formatu %s
i std::string
jak ten prowadzi do nieokreślonego zachowania:używania% s Format specifier z boost :: formatu i std :: string
std::string myString = "test";
printf("%s", myString);
Ale jest to zaoszczędzić używać ten sam specyfikator i std::string
z 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
określa (const) char*
, ale zapewniają std::string
. Czy to też może prowadzić do UB?
I może być brakuje punktu, ale dlaczego nie przekazać std :: string.c_str()? –
Ponieważ znalazłem wiele z tych wywołań w starym kodzie i próbuję zdecydować, czy muszę to naprawić, czy nie. Również chciałbym wiedzieć, jak poprawnie używać specyfikatora% s w przyszłości. –