【发布时间】:2016-03-25 09:41:27
【问题描述】:
众所周知,如果由于某种原因您 printf() 某些东西而不是流式传输(这种情况很少,但有时可能会发生),您需要指定适当的格式说明符(d 用于带符号的 int,@987654323 @ 表示未签名等)。现在,由于printf() 是 C++ 标准库的一部分,而不仅仅是一些 C 遗产,我希望可能会有类似的东西
template <typename T>
const std::string format_specifier;
这会允许,比如说:
template <typename Foo>
void bar(const Foo& my_foo) {
printf(format_specifier<Foo>, my_foo);
}
标准库是否包含类似的东西?
注意事项:
- 请不要建议使用
std::cout,当然这是你应该做的默认事情。我询问了标准库中的一个函数;如果将其从其中删除,您可以说“永远不应该使用它,所以您的问题无关紧要”。
【问题讨论】:
-
std::osteam(如std::cout)? -
std::cout怎么样? -
据我所知,它不存在。顺便说一句,您的示例必须在临时
std::string上使用c_str()才能与printf兼容。 -
@Cornstalks:见编辑
-
@Shravan40:见编辑
标签: c++ c++-standard-library format-specifiers