C++ 将%s格式说明符与boost::format和std::string一起使用
我知道这样使用C++ 将%s格式说明符与boost::format和std::string一起使用,c++,boost,boost-format,C++,Boost,Boost Format,我知道这样使用%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"
%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;
}
#包括
int main()
{
std::string myString=“test”;
boost::格式化fmt(“%s”);
fmt%myString;
std::cout将%s
与boost::format
和std::string
一起使用是安全的。与printf
相比,格式字符串中的类型字符“不会将相关参数强制为一组受限类型,而只是设置与此类型规范关联的标志。”
我可能没有抓住要点,但为什么不传递std::string.c_str()?因为我在一些旧代码中发现了很多这样的调用,我正在尝试决定是否需要修复它。我还想知道将来如何正确使用%s说明符。