gpt4 book ai didi

c++ - 将 %s 格式说明符与 boost::format 和 std::string 一起使用

转载 作者:可可西里 更新时间:2023-11-01 18:29:42 24 4
gpt4 key购买 nike

我知道像这样使用 %s 格式说明符和 std::string 会导致未定义的行为:

std::string myString = "test";
printf("%s", myString);

但是使用相同的说明符和 std::stringboost::format 是否节省?

#include <boost/format.hpp>

int main()
{
std::string myString = "test";

boost::format fmt("%s");
fmt % myString;

std::cout << fmt.str();

return 0;
}

%s 指定了一个 (const) char*,但我提供了一个 std::string。这也会导致 UB 吗?

最佳答案

%sboost::formatstd::string 一起使用是安全的。与 printf 相比,格式字符串中的类型字符“不会将相关参数强加为一组受限制的类型,而只是设置与此类型规范相关联的标志。”

http://www.boost.org/doc/libs/1_49_0/libs/format/doc/format.html#printf_directives

关于c++ - 将 %s 格式说明符与 boost::format 和 std::string 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10671996/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com