Changeset 659 for code/branches/FICN/src/misc/String2Number.h
- Timestamp:
- Dec 20, 2007, 4:10:08 PM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
code/branches/FICN/src/misc/String2Number.h
r592 r659 9 9 10 10 /** 11 * String to number conversion 12 * 13 * This class converts a number inside a std::string 14 * into a numeric type number (int,float,double) 15 * Number in string can be decimal, hexadecimal or octal 16 * 17 * @author Nicolas Perrenoud<nicolape@ee.ethz.ch> 18 * 19 * @example 20 * float f; 21 * String2Number<float>(f, std::string(" 123.45 ")); 22 */ 11 * String to number conversion 12 * 13 * This class converts a number inside a std::string 14 * into a numeric type number (int,float,double) 15 * Number in string can be decimal, hexadecimal or octal 16 * 17 * @author Nicolas Perrenoud<nicolape@ee.ethz.ch> 18 * 19 * @example 20 * float f; 21 * String2Number<float>(f, std::string(" 123.45 ")); 22 */ 23 23 24 template <class T> 24 25 class String2Number 25 26 { 26 private: 27 bool success_; 28 public: 29 /** 30 * Constructor 31 * 32 * First value is the target variable, the second vector is the 33 * string where the number is taken from, the third parameter 34 * should be one of std::hex, std::dec or std::oct (dec is default value) 35 */ 36 inline String2Number(T& t, const std::string& s, std::ios_base& (*f)(std::ios_base&) = std::dec, int haltOnError=1) 37 { 38 std::istringstream iss(s); 39 success_ = !(iss >> f >> t).fail(); 27 private: 28 bool success_; 40 29 41 if (!success_ && haltOnError==1) 42 { 43 COUT(1) << "Error: Conversion from string to number in \"" << s << "\" failed." << std::endl; 44 exit(1); 45 } 46 } 30 public: 31 /** 32 * Constructor 33 * 34 * First value is the target variable, the second vector is the 35 * string where the number is taken from, the third parameter 36 * should be one of std::hex, std::dec or std::oct (dec is default value) 37 */ 38 inline String2Number(T& t, const std::string& s, std::ios_base& (*f)(std::ios_base&) = std::dec, int haltOnError=1) 39 { 40 std::istringstream iss(s); 41 success_ = !(iss >> f >> t).fail(); 42 43 if (!success_ && haltOnError==1) 44 { 45 COUT(1) << "Error: Conversion from string to number in \"" << s << "\" failed." << std::endl; 46 exit(1); 47 } 48 } 47 49 }; 48 50
Note: See TracChangeset
for help on using the changeset viewer.