source: trunk/lib/utility/stl_utility.cc @ 341

Last change on this file since 341 was 341, checked in by Jari Häkkinen, 18 years ago

Added exceptions for tracing file format problems when reading vectors.
Changed implentation for reading ints and doubles into stl vectors, now
unexpected characters are skipped instead of treated as zeros.
Some other minor things.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
File size: 1.4 KB
Line 
1// $Id: stl_utility.cc 341 2005-06-07 14:41:25Z jari $
2
3#include <c++_tools/utility/stl_utility.h>
4#include <c++_tools/utility/utility.h>
5
6#include <iostream>
7#include <sstream>
8#include <string>
9#include <vector>
10
11namespace theplu {
12namespace utility {
13
14 
15  bool read_to_double(std::istream& is, std::vector<double>& vec)
16  {
17    vec.resize(0);
18    std::vector<std::string> vec_str;
19    if (read_to_string(is,vec_str)){
20      for (size_t i=0; i<vec_str.size(); i++) {
21        if (!is_float(vec_str[i])){
22          std::cerr << "Warning: '" << vec_str[i] 
23                    << "' is not a number." << std::endl;
24        }
25        else
26          vec.push_back(atof(vec_str[i].c_str()));
27      } 
28      return true;
29    }
30    else 
31      return false;
32  }
33
34
35
36  bool read_to_int(std::istream& is, std::vector<int>& vec)
37  {
38    vec.resize(0);
39    std::vector<std::string> vec_str;
40    if (read_to_string(is,vec_str)){
41      for (size_t i=0; i<vec_str.size(); i++) {
42        if (!is_int(vec_str[i])){
43          std::cerr << "Warning: '" << vec_str[i] 
44                    << "' is not an integer." << std::endl;
45        }
46        else
47          vec.push_back(atoi(vec_str[i].c_str()));
48      }
49      return true;
50    }
51    else 
52      return false;
53  }
54
55
56
57  bool read_to_string(std::istream& is, std::vector<std::string>& vec)
58  {
59    vec.resize(0);
60    std::string s;
61    if (getline(is, s, '\n')){
62      std::istringstream line(s);
63      std::string tmp_string;
64      while (line >> tmp_string) 
65        vec.push_back(tmp_string);
66      return true;
67    }
68    else 
69      return false;
70  }
71
72
73}} // end of namespace utility and namespace thep
74
Note: See TracBrowser for help on using the repository browser.