boost :: format und benutzerdefiniertes Drucken von Standardcontainern
Ich habe eine Funktion in meinem Namespacens
das hilft mir, STL-Container zu drucken. Zum Beispiel:
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;
}
Dies eignet sich hervorragend zum Drucken mitoperator <<
direkt:
std::set<std::string> x = { "1", "2", "3", "4" };
std::cout << x << std::endl;
Verwenden Sie jedochboost::format
ist unmöglich:
std::set<std::string> x = { "1", "2", "3", "4" };
boost::format("%1%") % x;
Das Problem liegt auf der Hand: Boost hat keine Ahnung, dass ich meinen Brauch verwenden möchteoperator <<
um Typen zu drucken, die nichts mit meinem Namespace zu tun haben. Außerhalb des Hinzufügens einesusing
Erklärung inboost/format/feed_args.hpp
gibt es eine bequeme möglichkeit zu machenboost::format
suche meineoperator <<
?