7
我知道使用%s
格式說明和std::string
這樣會導致未定義的行爲:使用%s格式與升壓::格式的std :: string
std::string myString = "test";
printf("%s", myString);
但它是保存使用相同的說明符和std::string
與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
指定(常數)char*
,但我提供std::string
。這是否也會導致UB?
我可能會錯過了點,但爲什麼不通過的std :: string.c_str()? –
因爲我在一些遺留代碼中發現了很多這樣的調用,並且我試圖決定是否需要修復它。另外我想知道如何在將來正確使用%s說明符。 –