diff --git a/src/kiwano/core/string.hpp b/src/kiwano/core/string.hpp index 46cc587c..5c0ffc51 100644 --- a/src/kiwano/core/string.hpp +++ b/src/kiwano/core/string.hpp @@ -36,7 +36,7 @@ inline namespace core // // basic_string<> // Lightweight ::std::basic_string<>-like class -// When using basic_string<> with a c-style string (char* or WChar*), constructor and operator=() just hold +// When using basic_string<> with a c-style string (char* or wchar_t*), constructor and operator=() just hold // a pointer to the character array but don't copy its content, considering performance issues. // Use assign() and basic_string<>::cstr() to work fine with c-style strings. // @@ -132,8 +132,8 @@ public: void reserve(const size_type new_cap = 0); inline void resize(const size_type new_size, const char_type ch = value_type()) { check_operability(); if (new_size < size_) str_[size_ = new_size] = value_type(); else append(new_size - size_, ch); } - Int32 compare(const char_type* const str) const; - inline Int32 compare(basic_string const& str) const { return compare(str.c_str()); } + Int32 compare(const char_type* const str) const; + inline Int32 compare(basic_string const& str) const { return compare(str.c_str()); } basic_string& append(size_type count, char_type ch); basic_string& append(const char_type* cstr, size_type count); @@ -380,6 +380,14 @@ template template ::std::basic_istream::char_type>& operator>>(::std::basic_istream::char_type>& is, basic_string<_CharTy>& str); + +// +// string && wstring +// +using string = ::kiwano::core::basic_string; +using wstring = ::kiwano::core::basic_string; + + // // to_string functions // @@ -411,6 +419,26 @@ basic_string<_CharTy> to_basic_string(Float64 val); template basic_string<_CharTy> to_basic_string(long double val); +string to_string(Int32 val); +string to_string(UInt32 val); +string to_string(long val); +string to_string(unsigned long val); +string to_string(long long val); +string to_string(unsigned long long val); +string to_string(Float32 val); +string to_string(Float64 val); +string to_string(long double val); + +wstring to_wstring(Int32 val); +wstring to_wstring(UInt32 val); +wstring to_wstring(long val); +wstring to_wstring(unsigned long val); +wstring to_wstring(long long val); +wstring to_wstring(unsigned long long val); +wstring to_wstring(Float32 val); +wstring to_wstring(Float64 val); +wstring to_wstring(long double val); + // // format_wstring // @@ -422,12 +450,6 @@ template basic_string format_string(const WChar* const fmt, _Args&& ... args); -// -// string && wstring -// -using string = ::kiwano::core::basic_string; -using wstring = ::kiwano::core::basic_string; - } // inline namespace core } // namespace kiwano @@ -1366,6 +1388,26 @@ inline namespace core return (__to_string_detail::FloatingToString<_CharTy>::convert(val)); } + inline string to_string(Int32 val) { return to_basic_string(val); } + inline string to_string(UInt32 val) { return to_basic_string(val); } + inline string to_string(long val) { return to_basic_string(val); } + inline string to_string(unsigned long val) { return to_basic_string(val); } + inline string to_string(long long val) { return to_basic_string(val); } + inline string to_string(unsigned long long val) { return to_basic_string(val); } + inline string to_string(Float32 val) { return to_basic_string(val); } + inline string to_string(Float64 val) { return to_basic_string(val); } + inline string to_string(long double val) { return to_basic_string(val); } + + inline wstring to_wstring(Int32 val) { return to_basic_string(val); } + inline wstring to_wstring(UInt32 val) { return to_basic_string(val); } + inline wstring to_wstring(long val) { return to_basic_string(val); } + inline wstring to_wstring(unsigned long val) { return to_basic_string(val); } + inline wstring to_wstring(long long val) { return to_basic_string(val); } + inline wstring to_wstring(unsigned long long val) { return to_basic_string(val); } + inline wstring to_wstring(Float32 val) { return to_basic_string(val); } + inline wstring to_wstring(Float64 val) { return to_basic_string(val); } + inline wstring to_wstring(long double val) { return to_basic_string(val); } + template inline basic_string format_string(const char* const fmt, _Args&& ... args) {