Convert String-Type the C++-Way
Here's the header:
#include <string> #include <iostream> #include <vector> #include <sstream> #include <iomanip> using namespace std; #ifndef ST_STRING #define ST_STRING enum CONVTYPE { STRTOINT, STRTOFLOAT, INTTOSTR, STRTODOUBLE }; /* * Convtype converts an integer to a string and a string * string to an integer, a float, or a double. The third argument * of this method determines what to do: * STRTOINT, STRTOFLOAT, INTTOSTR, and STRTODOUBLE. * */ void convtype(void*, void*, const int& ); #endif
The appropiate implementation:
void convtype(void* inp, void* out, const int& convtype) { istringstream isbuf; ostringstream osbuf; switch(convtype) { case STRTOINT: isbuf.str(*(string*) inp); isbuf >> *((int*) out); break; case STRTOFLOAT: isbuf.str(*(string*) inp); isbuf >> *((float*) out); break; case STRTODOUBLE: isbuf.str(*(string*) inp); isbuf >> *((double*) out); break; case INTTOSTR: osbuf << *((int*) inp); *((string*)out)=osbuf.str(); break; } return; }