g4tools  5.4.0
snums
Go to the documentation of this file.
1 // Copyright (C) 2010, Guy Barrand. All rights reserved.
2 // See the file tools.license for terms.
3 
4 #ifndef tools_snums
5 #define tools_snums
6 
7 #include "words"
8 #include "sto"
9 #include "forit"
10 
11 namespace tools {
12 
13 template <class T> //T must be numbers (not std::string).
14 inline bool snums(const std::string& a_string,
15  std::istringstream& a_iss,std::vector<std::string>& a_tmp,
16  const std::string& a_sep,
17  std::vector<T>& a_values,bool a_clear = true) {
18  if(a_clear) a_values.clear();
19  words(a_string,a_sep,false,a_tmp);
20  T value;
21  tools_vforcit(std::string,a_tmp,it) {
22  a_iss.str(*it);
23  a_iss.clear(); //IMPORTANT.
24  a_iss >> value;
25  if(a_iss.fail()) {a_values.clear();return false;}
26  a_values.push_back(value);
27  }
28  return true;
29 }
30 
31 template <class T> //T must be numbers (not std::string).
32 inline bool snums(const std::string& a_string,const std::string& a_sep,std::vector<T>& a_values,bool a_clear = true) {
33  std::istringstream iss;
34  std::vector<std::string> words;
35  return snums(a_string,iss,words,a_sep,a_values,a_clear);
36 }
37 
38 }
39 
40 #endif
tools::value
Definition: value:18
sto
tools
inlined C code : ///////////////////////////////////
Definition: aida_ntuple:26
tools::words
void words(const std::string &a_string, const std::string &a_sep, bool a_take_empty, std::vector< std::string > &a_words, bool a_clear=true)
Definition: words:12
words
tools::snums
bool snums(const std::string &a_string, std::istringstream &a_iss, std::vector< std::string > &a_tmp, const std::string &a_sep, std::vector< T > &a_values, bool a_clear=true)
Definition: snums:14
forit
tools_vforcit
#define tools_vforcit(a__T, a__v, a__it)
Definition: forit:7