xtd 0.2.0
to_string.h
Go to the documentation of this file.
1 #pragma once
5 #define __XTD_CORE_INTERNAL__
7 #include "internal/__binary_formatter.h"
8 #include "internal/__boolean_formatter.h"
9 #include "internal/__character_formatter.h"
10 #include "internal/__currency_formatter.h"
11 #include "internal/__date_time_formatter.h"
12 #include "internal/__duration_formatter.h"
13 #include "internal/__enum_formatter.h"
14 #include "internal/__fixed_point_formatter.h"
15 #include "internal/__natural_formatter.h"
16 #include "internal/__numeric_formatter.h"
17 #include "internal/__string_formatter.h"
18 #undef __XTD_CORE_INTERNAL__
19 #include "types.h"
21 #include <string>
22 
24 namespace xtd {
35  template<typename value_t>
36  inline std::string to_string(const value_t& value, const std::string& fmt, const std::locale& loc) {return __to_string_enum(value, fmt, loc, std::is_enum<value_t>());}
37 
48  template<>
49  inline std::string to_string(const bool& value, const std::string& fmt, const std::locale& loc) {return __boolean_formatter(fmt, value, loc);}
50 
61  template<>
62  inline std::string to_string(const sbyte& value, const std::string& fmt, const std::locale& loc) {return __numeric_formatter(fmt, value, loc);}
63 
74  template<>
75  inline std::string to_string(const char& value, const std::string& fmt, const std::locale& loc) {return __numeric_formatter(fmt, value, loc);}
76 
87  template<>
88  inline std::string to_string(const unsigned char& value, const std::string& fmt, const std::locale& loc) {return __numeric_formatter(fmt, value, loc);}
89 
100  template<>
101  inline std::string to_string(const short& value, const std::string& fmt, const std::locale& loc) {return __numeric_formatter(fmt, value, loc);}
102 
113  template<>
114  inline std::string to_string(const unsigned short& value, const std::string& fmt, const std::locale& loc) {return __numeric_formatter(fmt, value, loc);}
115 
126  template<>
127  inline std::string to_string(const int& value, const std::string& fmt, const std::locale& loc) {return __numeric_formatter(fmt, value, loc);}
128 
139  template<>
140  inline std::string to_string(const unsigned int& value, const std::string& fmt, const std::locale& loc) {return __numeric_formatter(fmt, value, loc);}
141 
152  template<>
153  inline std::string to_string(const long& value, const std::string& fmt, const std::locale& loc) {return __numeric_formatter(fmt, value, loc);}
154 
165  template<>
166  inline std::string to_string(const unsigned long& value, const std::string& fmt, const std::locale& loc) {return __numeric_formatter(fmt, value, loc);}
167 
178  template<>
179  inline std::string to_string(const long long& value, const std::string& fmt, const std::locale& loc) {return __numeric_formatter(fmt, value, loc);}
180 
191  template<>
192  inline std::string to_string(const unsigned long long& value, const std::string& fmt, const std::locale& loc) {return __numeric_formatter(fmt, value, loc);}
193 
204  template<>
205  inline std::string to_string(const float& value, const std::string& fmt, const std::locale& loc) {return __fixed_point_formatter(fmt, value, loc);}
206 
217  template<>
218  inline std::string to_string(const double& value, const std::string& fmt, const std::locale& loc) {return __fixed_point_formatter(fmt, value, loc);}
219 
230  template<>
231  inline std::string to_string(const long double& value, const std::string& fmt, const std::locale& loc) {return __fixed_point_formatter(fmt, value, loc);}
232 
243  template<>
244  inline std::string to_string(const std::chrono::system_clock::time_point& value, const std::string& fmt, const std::locale& loc) {return __date_time_formatter(fmt, std::chrono::system_clock::to_time_t(value), std::chrono::duration_cast<std::chrono::nanoseconds>(value.time_since_epoch()).count() % 1000000000, loc);}
245 
256  template<>
257  inline std::string to_string(const std::tm& value, const std::string& fmt, const std::locale& loc) {return __date_time_formatter(fmt, value, 0, loc);}
258 
269  template<typename type_t, typename Period>
270  inline std::string to_string(const std::chrono::duration<type_t, Period>& value, const std::string& fmt, const std::locale& loc) {return __duration_formatter(fmt, value, loc);}
271 
272 #if defined(__cpp_lib_char8_t)
273  template<>
284  inline std::string to_string(const char8& value, const std::string& fmt, const std::locale& loc) {return __character_formatter(fmt, value, loc);}
285 #endif
286 
297  template<>
298  inline std::string to_string(const char16& value, const std::string& fmt, const std::locale& loc) {return __character_formatter(fmt, value, loc);}
299 
310  template<>
311  inline std::string to_string(const char32& value, const std::string& fmt, const std::locale& loc) {return __character_formatter(fmt, value, loc);}
312 
323  template<>
324  inline std::string to_string(const wchar& value, const std::string& fmt, const std::locale& loc) {return __character_formatter(fmt, value, loc);}
325 
327  std::string to_string(const char* value, const std::string& fmt, const std::locale& loc);
328 #if defined(__cpp_lib_char8_t)
329  std::string to_string(const char8* value, const std::string& fmt, const std::locale& loc);
330 #endif
331  std::string to_string(const char16* value, const std::string& fmt, const std::locale& loc);
332  std::string to_string(const char32* value, const std::string& fmt, const std::locale& loc);
333  std::string to_string(const wchar* value, const std::string& fmt, const std::locale& loc);
334  std::string to_string(const std::string& value, const std::string& fmt, const std::locale& loc);
335  std::string to_string(const xtd::ustring& value, const std::string& fmt, const std::locale& loc);
336 #if defined(__cpp_lib_char8_t)
337  std::string to_string(const std::u8string& value, const std::string& fmt, const std::locale& loc);
338 #endif
339  std::string to_string(const std::u16string& value, const std::string& fmt, const std::locale& loc);
340  std::string to_string(const std::u32string& value, const std::string& fmt, const std::locale& loc);
341  std::string to_string(const std::wstring& value, const std::string& fmt, const std::locale& loc);
343 
353  template<typename value_t>
354  inline std::string to_string(const value_t& value, const std::string& fmt) {return to_string(value, fmt, std::locale());}
355 
357  inline std::string to_string(const char* value, const std::string& fmt) {return to_string(value, fmt, std::locale());}
359 
370  template<typename value_t>
371  inline std::wstring to_string(const value_t& value, const std::wstring& fmt, const std::locale& loc) {return __to_string_enum(value, fmt, loc, std::is_enum<value_t>());}
372 
383  template<>
384  inline std::wstring to_string(const bool& value, const std::wstring& fmt, const std::locale& loc) {return __boolean_formatter(fmt, value, loc);}
385 
396  template<>
397  inline std::wstring to_string(const sbyte& value, const std::wstring& fmt, const std::locale& loc) {return __numeric_formatter(fmt, value, loc);}
398 
409  template<>
410  inline std::wstring to_string(const char& value, const std::wstring& fmt, const std::locale& loc) {return __numeric_formatter(fmt, value, loc);}
411 
422  template<>
423  inline std::wstring to_string(const unsigned char& value, const std::wstring& fmt, const std::locale& loc) {return __numeric_formatter(fmt, value, loc);}
424 
435  template<>
436  inline std::wstring to_string(const short& value, const std::wstring& fmt, const std::locale& loc) {return __numeric_formatter(fmt, value, loc);}
437 
448  template<>
449  inline std::wstring to_string(const unsigned short& value, const std::wstring& fmt, const std::locale& loc) {return __numeric_formatter(fmt, value, loc);}
450 
461  template<>
462  inline std::wstring to_string(const int& value, const std::wstring& fmt, const std::locale& loc) {return __numeric_formatter(fmt, value, loc);}
463 
474  template<>
475  inline std::wstring to_string(const unsigned int& value, const std::wstring& fmt, const std::locale& loc) {return __numeric_formatter(fmt, value, loc);}
476 
487  template<>
488  inline std::wstring to_string(const long& value, const std::wstring& fmt, const std::locale& loc) {return __numeric_formatter(fmt, value, loc);}
489 
500  template<>
501  inline std::wstring to_string(const unsigned long& value, const std::wstring& fmt, const std::locale& loc) {return __numeric_formatter(fmt, value, loc);}
502 
513  template<>
514  inline std::wstring to_string(const long long& value, const std::wstring& fmt, const std::locale& loc) {return __numeric_formatter(fmt, value, loc);}
515 
526  template<>
527  inline std::wstring to_string(const unsigned long long& value, const std::wstring& fmt, const std::locale& loc) {return __numeric_formatter(fmt, value, loc);}
528 
539  template<>
540  inline std::wstring to_string(const float& value, const std::wstring& fmt, const std::locale& loc) {return __fixed_point_formatter(fmt, value, loc);}
541 
552  template<>
553  inline std::wstring to_string(const double& value, const std::wstring& fmt, const std::locale& loc) {return __fixed_point_formatter(fmt, value, loc);}
554 
565  template<>
566  inline std::wstring to_string(const long double& value, const std::wstring& fmt, const std::locale& loc) {return __fixed_point_formatter(fmt, value, loc);}
567 
578  template<>
579  inline std::wstring to_string(const std::chrono::system_clock::time_point& value, const std::wstring& fmt, const std::locale& loc) {return __date_time_formatter(fmt, std::chrono::system_clock::to_time_t(value), std::chrono::duration_cast<std::chrono::milliseconds>(value.time_since_epoch()).count() % 1000000000, loc);}
580 
591  template<>
592  inline std::wstring to_string(const std::tm& value, const std::wstring& fmt, const std::locale& loc) {return __date_time_formatter(fmt, value, 0, loc);}
593 
604  template<typename type_t, typename Period>
605  inline std::wstring to_string(const std::chrono::duration<type_t, Period>& value, const std::wstring& fmt, const std::locale& loc) {return __duration_formatter(fmt, value, loc);}
606 
617  template<>
618  inline std::wstring to_string(const std::wstring& value, const std::wstring& fmt, const std::locale& loc) {return __string_formatter(fmt, value, loc);}
619 
620 #if defined(__cpp_lib_char8_t)
621  template<>
632  inline std::wstring to_string(const char8& value, const std::wstring& fmt, const std::locale& loc) {return __character_formatter(fmt, value, loc);}
633 #endif
634 
645  template<>
646  inline std::wstring to_string(const char16& value, const std::wstring& fmt, const std::locale& loc) {return __character_formatter(fmt, value, loc);}
647 
658  template<>
659  inline std::wstring to_string(const char32& value, const std::wstring& fmt, const std::locale& loc) {return __character_formatter(fmt, value, loc);}
660 
671  template<>
672  inline std::wstring to_string(const wchar& value, const std::wstring& fmt, const std::locale& loc) {return __character_formatter(fmt, value, loc);}
673 
675  inline std::wstring to_string(const wchar* value, const std::wstring& fmt, const std::locale& loc) {return __string_formatter(fmt, value, loc);}
677 
687  template<typename value_t>
688  inline std::wstring to_string(const value_t& value, const std::wstring& fmt) {return to_string(value, fmt, std::locale());}
689 
691  inline std::wstring to_string(const wchar* value, const std::wstring& fmt) {return to_string(value, fmt, std::locale());}
693 }
694 
Contains xtd fundamental types.
int_least8_t sbyte
Represents a 8-bit signed integer.
Definition: types.h:173
The xtd namespace contains all fundamental classes to access Hardware, Os, System, and more.
Definition: system_report.h:17
Represents text as a sequence of UTF-8 code units.
Definition: ustring.h:46
std::string to_string(const date_time &value, const std::string &fmt, const std::locale &loc)
Convert a specified value into a string with specified format and locale.
Definition: date_time.h:1063
char32_t char32
Represents a 32-bit unicode character.
Definition: types.h:85
char8_t char8
Represents a 8-bit unicode character.
Definition: types.h:62
char16_t char16
Represents a 16-bit unicode character.
Definition: types.h:74
wchar_t wchar
Represents a wide character.
Definition: types.h:284