1 #ifndef _theplu_yat_utility_getvector_ 2 #define _theplu_yat_utility_getvector_ 25 #include <yat/utility/split.h> 28 #include <boost/type_traits/is_same.hpp> 52 std::istream&
getvector(std::istream&
is, std::vector<T>& result,
53 char delim,
char newlinedelim=
'\n');
62 std::istream&
getvector(std::istream&
is, std::vector<T>& result,
63 const std::string& delim,
char newlinedelim=
'\n');
70 void convert(std::vector<std::string>& vec,
71 std::vector<T>& result, boost::true_type is_string)
75 std::swap(vec, result);
80 void convert(std::vector<std::string>& vec,
81 std::vector<T>& result, boost::false_type is_string)
83 result.reserve(vec.size());
84 for (
size_t i=0; i<vec.size(); ++i)
85 result.push_back(utility::convert<T>(vec[i]));
92 template<
typename DELIM,
typename T>
93 std::istream&
getvector(std::istream&
is, std::vector<T>& result,
94 DELIM delim,
char nl_delim)
97 if (!getline(is, line, nl_delim))
99 std::vector<std::string> vec;
100 split(vec, line, delim);
101 typename boost::is_same<T, std::string> is_string;
102 convert(vec, result, is_string);
110 std::istream&
getvector(std::istream& is, std::vector<T>& result,
111 char delim,
char newlinedelim)
113 return detail::getvector(is, result, delim, newlinedelim);
118 std::istream&
getvector(std::istream& is, std::vector<T>& result,
119 const std::string& delim,
char newlinedelim)
121 return detail::getvector(is, result, delim, newlinedelim);
bool is(const std::string &s)
check if string is convertible to (numerical) type T
Definition: utility.h:485
The Department of Theoretical Physics namespace as we define it.
Some useful functions are placed here.
std::istream & getvector(std::istream &is, std::vector< T > &result, char delim, char newlinedelim='\n')
Definition: getvector.h:110
void split(std::vector< std::string > &result, const std::string &str, char delim)
split a string into several substrings
std::string convert(T input)
convert T to a string
Definition: utility.h:465