boost::format および std::string で %s 形式指定子を使用する
-
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
. 。これもUBにつながるのでしょうか?
解決
安全に使用できます %s
と boost::format
そして std::string
. 。対照的に、 printf
, 、書式文字列内の型文字は、「関連する引数が制限された型セットであることを強制するのではなく、単にこの型仕様に関連付けられたフラグを設定するだけです。」
http://www.boost.org/doc/libs/1_49_0/libs/format/doc/format.html#printf_directives
所属していません StackOverflow