大佬教程收集整理的这篇文章主要介绍了c – boost :: format和定制打印std容器,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
template <typename T> std::ostream& operator<<(std::ostream& stream,const std::set<T>& set) { stream << "{"; bool first = true; for (const T& item : set) { if (!first) stream << ","; else first = false; stream << item; } stream << "}"; return stream; }
这对于用操作符<<直:
std::set<std::string> x = { "1","2","3","4" }; std::cout << x << std::endl;
但是,使用boost :: format是不可能的:
std::set<std::string> x = { "1","4" }; boost::format("%1%") % x;
问题是相当明显的:Boost不知道我希望它使用我的自定义运算符<<打印与我的命名空间无关的类型.除了在boost / format / Feed_args.hpp中添加使用声明之外,是否有一种方便的方式来使boost :: format找到我的运算符<?
namespace ns { namespace wrappers { template<class T> struct out { const std::set<T> &set; out(const std::set<T> &set) : set(set) {} friend std::ostream& operator<<(std::ostream& stream,const out &o) { stream << "{"; bool first = true; for (const T& item : o.set) { if (!first) stream << ","; else first = false; stream << item; } stream << "}"; return stream; } }; } template<class T> wrappers::out<T> out(const std::set<T> &set) { return wrappers::out<T>(set); } }
然后使用它:
std::cout << boost::format("%1%") % ns::out(X);
以上是大佬教程为你收集整理的c – boost :: format和定制打印std容器全部内容,希望文章能够帮你解决c – boost :: format和定制打印std容器所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。