OSDN Git Service

Port range check was implemented.
[ultramonkey-l7/ultramonkey-l7-v2.git] / logger / lexical_cast.h
1 #ifndef __LEXICAL_CAST_H__
2 #define __LEXICAL_CAST_H__
3
4 #include <string>
5 #include <sstream>
6 #include <typeinfo>
7
8
9 namespace l7vs
10 {
11         class bad_lexical_cast : public std::bad_cast
12         {
13         public:
14                 bad_lexical_cast() {}
15         };
16
17         template <typename T>
18         T lexical_cast(const std::string& s)
19         {
20                 std::stringstream ss;
21                 T d;
22                 ss << s.c_str();
23                 while( !ss.eof() ){
24                         ss >> d;
25                         if(ss.fail()) {
26                                 throw bad_lexical_cast();
27                         }
28                 }
29                 return d;
30         }
31 }
32
33 #endif  //__LEXICAL_CAST_H__