#include <iostream>
#include <string>
#include <sstream>
#include <complex>
using namespace std;
template<typename T>
T fromString(const string &s)
{
istringstream is(s);
T t;
is >> t;
return t;
}
template<typename T>
string toString(const T &t)
{
ostringstream s;
s << t;
return s.str();
}
int main(int argc, char *argv[])
{
int i = 12345;
cout << "i == \"" << toString(i) << "\"" << endl;
float x = 567.89;
cout << "x == \"" << toString(x) << "\"" << endl;
complex<float> c(1.0, 2.0);
cout << "c == \"" << toString(c) << "\"" << endl << endl;
i = fromString<int>(string("1234"));
cout << "i == " << i << endl;
x = fromString<float>(string("567.89"));
cout << "x == " << x << endl;
c = fromString< complex<float> >(string("(1.0, 2.0)"));
cout << "c == " << c << endl;
return 0;
}
运行结果为:
i == "12345"
x == "567.89"
c == "(1,2)"
i == 1234
x == 567.89
c == (1,2)