Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/branches/FICN/src/misc/String2Number.h @ 721

Last change on this file since 721 was 721, checked in by landauf, 16 years ago

added Convert.h (greetings to bensch) and changed the corresponding lines in the ConfigValueContainer.

File size: 1.2 KB
Line 
1#ifndef _String2Number_H__
2#define _String2Number_H__
3
4#include <string>
5#include <sstream>
6#include <iostream>
7
8#include "orxonox/core/Debug.h"
9
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 */
23
24template <class T>
25class String2Number
26{
27  private:
28  bool success_;
29
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  }
49};
50
51#endif /* _String2Number_H__ */
Note: See TracBrowser for help on using the repository browser.