باستخدام ٪ ق شكل محدد مع دفعة:: شكل والأمراض المنقولة جنسيا:: سلسلة
-
12-12-2019 - |
سؤال
وأنا أعلم أن استخدام %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
.يمكن أن يؤدي هذا إلى يو بي أيضا?
المحلول
أنها آمنة للاستخدام %s
مع boost::format
و std::string
.على النقيض من printf
, ، لا يفرض حرف الكتابة في سلسلة التنسيق " الوسائط المعنية لتكون من مجموعة مقيدة من الأنواع ، ولكنها تحدد فقط العلامات المرتبطة بمواصفات النوع هذه."
http://www.boost.org/doc/libs/1_49_0/libs/format/doc/format.html#printf_directives
لا تنتمي إلى StackOverflow