The echo construct is introduced to convert values to strings. The conversion is defined for all built-in types and for some library classes. Output type can be std::string or std::wstring.
template <typename C>
class ext::common_echo : public std::basic_string <C> {
public:
common_echo (const char *, C invalid = '?');
common_echo (const wchar_t *, C invalid = '?');
common_echo (const std::basic_string <char> &, C invalid = '?');
common_echo (const std::basic_string <wchar_t> &, C invalid = '?');
template <typename T>
common_echo (const T *);
common_echo (bool, ext::echo_format = ext::default_format);
common_echo (char);
common_echo (wchar_t);
common_echo (signed char, echo_format = default_format, unsigned int = 0, C=0);
common_echo (signed short, echo_format = default_format, unsigned int = 0, C=0);
common_echo (signed int, echo_format = default_format, unsigned int = 0, C=0);
common_echo (signed long, echo_format = default_format, unsigned int = 0, C=0);
common_echo (const signed long long &, echo_format = default_format,
unsigned int = 0, C = 0);
common_echo (unsigned char, echo_format = default_format, unsigned int = 0, C=0);
common_echo (unsigned short, echo_format = default_format, unsigned int = 0, C=0);
common_echo (unsigned int, echo_format = default_format, unsigned int = 0, C=0);
common_echo (unsigned long, echo_format = default_format, unsigned int = 0, C=0);
common_echo (const unsigned long long &, echo_format = default_format,
unsigned int = 0, C = 0);
common_echo (float, ext::echo_format = ext::default_format,
unsigned int = 0, unsigned int = 0, C = 0);
common_echo (const double &, ext::echo_format = ext::default_format,
unsigned int = 0, unsigned int = 0, C = 0);
common_echo (const long double &, ext::echo_format = ext::default_format,
unsigned int = 0, unsigned int = 0, C = 0);
template <typename T>
common_echo (const std::complex <T> &);
common_echo (const std::type_info &);
common_echo (const std::tm &);
common_echo (const std::exception &);
};
typedef ext::common_echo <char> ext::echo;
typedef ext::common_echo <wchar_t> ext::wecho;
The ext::echo constructs from one parameter of any of supported type (and optional parameters that control the string format) and then behaves like std::basic_string.
Use ext::echo when converting to std::string, use ext::wecho when converting to std::wstring.
Following groups of input types are supported:
These conversions may take three following additional parameters:
These conversions may take four following additional parameters:
#include <ext/c++>
int main () {
std::printf ("%s\n", ext::echo ((void *) 0).c_str ());
std::printf ("%s\n", ext::echo (-7).c_str ());
std::printf ("%s\n", ext::echo (123, ext::hexadecimal_format).c_str ());
std::printf ("%s\n", ext::echo (L"wide-char text").c_str ());
std::time_t t = std::time (NULL);
std::printf ("%s\n", ext::echo (*localtime (&t)).c_str ());
return 0;
};
The ext::echo and ext::wecho are implemented as typedefs for template ext::common_echo <T> where T is char or wchar_t respectively.
Note that to achieve full compatibility with std::string and std::wstring, the ext::common_echo is publicly derived from std::basic_string. Although this is bad practice in most cases, to avoid most common problems the ext::common_echo disallows its dynamic allocation.
The ext::common_echo does not introduce any public nor private data members to its std::basic_string base class and all conversions are computed in constructors.
[index]