Add sprintf overload for wide strings

and fix an issue in formatting user-defined objects.
Thanks to @ScottLangham
This commit is contained in:
vitaut
2015-09-18 16:26:41 -07:00
parent 79d8f59906
commit ef710dee6c
4 changed files with 27 additions and 5 deletions

View File

@ -68,15 +68,25 @@ inline FILE *safe_fopen(const char *filename, const char *mode) {
#endif
}
class TestString {
template <typename Char>
class BasicTestString {
private:
std::string value_;
std::basic_string<Char> value_;
static const Char EMPTY[];
public:
explicit TestString(const char *value = "") : value_(value) {}
explicit BasicTestString(const Char *value = EMPTY) : value_(value) {}
friend std::ostream &operator<<(std::ostream &os, const TestString &s) {
friend std::basic_ostream<Char> &operator<<(
std::basic_ostream<Char> &os, const BasicTestString &s) {
os << s.value_;
return os;
}
};
template <typename Char>
const Char BasicTestString<Char>::EMPTY[] = {0};
typedef BasicTestString<char> TestString;
typedef BasicTestString<wchar_t> TestWString;