proj home

Files   Classes   Functions   Hierarchy  

stringconvert.h

Go to the documentation of this file.
00001 #ifndef STRINGCONVERT_H
00002 #define STRINGCONVERT_H
00003 
00004 #include <sstream>
00005 using namespace std;
00006 
00007 #include <typedefs.h>
00008 
00015 template< typename T >
00016 string& operator << (string& str, T const & x);
00017 
00018 // Functional conversion functions.
00019 // These are more compact that the class stringconvert and code using them
00020 // is easier to use.
00021 // See also stringserialization.h
00022 
00024 template< typename T >
00025 void stringfrom(T & targ, stringc & str);
00027 template< typename T >
00028 void stringto(string & str, T const data);
00030 template< typename T >
00031 stringc stringto(T const data);
00032 
00036 class stringconvert
00037 {
00038 public:
00039 
00041   template <typename T>
00042   static stringc tostring(T const x)
00043   {
00044     stringstream ss;
00045     ss << x;
00046     return ss.str();
00047   }
00049   template< typename T>
00050   static void fromstring( T & x, stringc & s)
00051   {
00052     stringstream ss(s);
00053     ss >> x;
00054   }
00055 
00058   static void findandreplace
00059   ( 
00060     string& source, 
00061     stringc & find, 
00062     stringc & replace 
00063   );
00064 
00066   static stringc findandreplacefn
00067   ( 
00068     stringc & source, 
00069     stringc & find, 
00070     stringc & replace 
00071   ); 
00072 
00073 };
00074 
00075 // Possible to expand. e.g. isstringhex, isstringip4 ...
00076 
00077 // Characters and not numerical values tested!
00078 // Remove white space around string.
00079 
00081 boolc isstringdigits(stringc & str);
00084 boolc isstringinteger(stringc & str);
00086 boolc isstringzero_or_positive_real(stringc & str);
00088 boolc isstringreal(stringc & str);
00090 boolc isstringnegative(stringc & str);
00091 
00093 template< typename T >
00094 stringc stringtag( T x, stringc & tag )
00095 {
00096   string s1 = "<" + tag + ">";
00097   s1 += stringto(x);
00098   s1 += ( "</" + tag + ">\n");
00099   return s1;
00100 }
00101 
00102 //---------------------------------------------------------
00103 //  Implementation.
00104 
00105 template< typename T >
00106 string& operator << (string& str, T const & x)
00107 {
00108   stringstream ss;
00109   ss << x;
00110   str += ss.str(); 
00111 
00112   return str;
00113 }
00114 
00115 template< typename T >
00116 void stringfrom(T & targ, stringc & str)
00117 {
00118   stringstream ss(str);
00119   ss >> targ;
00120 }  
00121 
00122 template< typename T >
00123 void stringto(string & str, T const data)
00124 {
00125   stringstream ss;
00126   ss << data;
00127   str = ss.str();
00128 }
00129 
00130 template< typename T >
00131 stringc stringto(T const data)
00132 {
00133   stringstream ss;
00134   ss << data;
00135   return ss.str();
00136 }
00137 
00138 
00139 
00140 
00141 #endif
00142 

Generated on Fri Mar 4 00:49:29 2011 for Chelton Evans Source by  doxygen 1.5.8