Shows how to use xtd::string::sprintf method.
#include <xtd/xtd>
class character : iformatable {
public:
character(const string& name, const string& rank) noexcept : name_(name), rank_(rank) {}
const string& name() const noexcept {return name_;}
const string& rank() const noexcept {return rank_;}
string to_string() const noexcept {return to_string("F", std::locale {});}
string to_string(const string& fmt) const noexcept {return to_string(fmt, std::locale {});}
string to_string(const string& fmt, const std::locale& loc) const override {
if (fmt == "F") return name_ + " (" + rank_ + ")";
if (fmt == "N") return name_;
if (fmt == "R") return rank_;
}
private:
string name_;
string rank_;
};
using characters = list<character>;
auto main() -> int {
character c("Jean-Luc Picard", "Captain");
console::out << string::sprintf("%s", c.to_string()) << environment::new_line;
console::out << string::sprintf("%s", c.to_string("F")) << environment::new_line;
console::out << string::sprintf("%s", c.to_string("N")) << environment::new_line;
console::out << string::sprintf("%s", c.to_string("R")) << environment::new_line;
}