Serial-TCP/IPbridge  1.0
conversions.h
Go to the documentation of this file.
1 
12 #ifndef CONVERSIONS_H
13 #define CONVERSIONS_H
14 
15 #include <iostream>
16 #include <sstream>
17 #include <iomanip>
18 #include <string>
19 #include <limits>
20 
26 template<typename T> inline std::string toString(const T &value) {
27  std::ostringstream out;
28  out << value;
29  return out.str();
30 }
31 
33 template<> inline std::string toString<bool>(const bool &value) {
34  std::ostringstream out;
35  out << std::boolalpha << value;
36  return out.str();
37 }
38 
40 template<> inline std::string toString<double>(const double &value) {
41  const int sigDigits = std::numeric_limits<double>::digits10;
42  std::ostringstream out;
43  out << std::setprecision(sigDigits) << value;
44  return out.str();
45 }
46 
48 template<> inline std::string toString<float>(const float &value) {
49  const int sigDigits = std::numeric_limits<float>::digits10;
50  std::ostringstream out;
51  out << std::setprecision(sigDigits) << value;
52  return out.str();
53 }
54 
56 template<> inline std::string toString<long double>(const long double &value) {
57  const int sigDigits = std::numeric_limits<long double>::digits10;
58  std::ostringstream out;
59  out << std::setprecision(sigDigits) << value;
60  return out.str();
61 }
62 
63 // Only for optimalization reasons - if there is someone trying to
64 // convert std::string into std::string...
66 template<> inline std::string toString<std::string>(const std::string &value) {
67  return std::string(value);
68 }
69 
70 // Only for optimalization reasons - if there is someone trying to
71 // convert char * into std::string...
72 typedef char * PtrToChar;
74 template<> inline std::string toString<PtrToChar>(const PtrToChar &value) {
75  return std::string(value);
76 }
77 
78 // Only for optimalization reasons - if there is someone trying to
79 // convert char into std::string...
81 template<> inline std::string toString<char>(const char &value) {
82  return std::string(1, value);
83 }
84 
95 template<typename N> inline bool strToNum(const std::string &str,
96  N &number, std::ios_base &(* format)(std::ios_base &) = std::dec) {
97  return !(std::istringstream(str) >> format >> number).fail();
98 }
99 
100 #endif // #ifndef CONVERSIONS_H
101 
102 // End of file conversions.h
std::string toString< PtrToChar >(const PtrToChar &value)
Specialization for char *.
Definition: conversions.h:74
std::string toString< long double >(const long double &value)
Specialization for long double.
Definition: conversions.h:56
char * PtrToChar
Definition: conversions.h:72
std::string toString< float >(const float &value)
Specialization for float.
Definition: conversions.h:48
std::string toString< bool >(const bool &value)
Specialization for bool.
Definition: conversions.h:33
std::string toString(const T &value)
Converts the selected value into a string.
Definition: conversions.h:26
bool strToNum(const std::string &str, N &number, std::ios_base &(*format)(std::ios_base &)=std::dec)
Converts the selected string into a number.
Definition: conversions.h:95
std::string toString< char >(const char &value)
Specialization for char.
Definition: conversions.h:81
std::string toString< double >(const double &value)
Specialization for double.
Definition: conversions.h:40