#include #include #include #include namespace { template< typename T > T StringTo(const std::string& s, std::ios::fmtflags format = std::ios::dec) { T rv = 0; std::istringstream istrm(s.c_str()); istrm.setf(format, std::ios::basefield); istrm >> rv; return rv; } template< typename T > std::string StringFrom(T value) { std::ostringstream rv; rv << value; return rv.str(); } } int main(int argc, char* argv[]) { int rv = 0; try { while (std::cin) { std::string sin; std::cout << "Enter floating point: "; getline(std::cin, sin); if (std::cin) { double d = StringTo(sin); std::cout << "StringTo(\"" << sin << "\") = " << d << std::endl; std::string sout = StringFrom(d); std::cout << "StringFrom(" << d << ") = \"" << sout << "\"" << std::endl; } std::cout << std::endl; } } catch (const std::exception& e) { std::cerr << "*** Error: " << e.what() << std::endl; rv = 1; } return rv; }