From: Mikko Rasa Date: Sat, 28 May 2011 09:00:07 +0000 (+0300) Subject: Use lexical_cast instead of stringstream in GetOpt X-Git-Url: http://git.tdb.fi/?p=libs%2Fcore.git;a=commitdiff_plain;h=8aaeebd4a23bf19682564a3044fb5be4029fe82e Use lexical_cast instead of stringstream in GetOpt --- diff --git a/source/core/getopt.h b/source/core/getopt.h index d45e888..bb1bd15 100644 --- a/source/core/getopt.h +++ b/source/core/getopt.h @@ -9,10 +9,10 @@ Distributed under the LGPL #define MSP_CORE_GETOPT_H_ #include -#include #include #include #include +#include namespace Msp { @@ -79,13 +79,14 @@ private: virtual void store(const std::string &a) { - T tmp; - std::istringstream ss(a); - ss>>tmp; - if(ss.fail()) - throw usage_error("Invalid argument for --"+lng); - - data = tmp; + try + { + data = lexical_cast(a); + } + catch(const lexical_error &e) + { + throw usage_error("Invalid argument for --"+lng+" ("+e.what()+")"); + } } private: T &data; @@ -102,13 +103,14 @@ private: virtual void store(const std::string &a) { - typename T::value_type tmp; - std::istringstream ss(a); - ss>>tmp; - if(ss.fail()) - throw usage_error("Invalid argument for --"+lng); - - data.push_back(tmp); + try + { + data.push_back(lexical_cast(a)); + } + catch(const lexical_error &e) + { + throw usage_error("Invalid argument for --"+lng+" ("+e.what()+")"); + } } private: T &data;