1 #ifndef _theplu_yat_utility_getvector_ 2 #define _theplu_yat_utility_getvector_ 25 #include <yat/utility/split.h> 28 #include <boost/algorithm/string/classification.hpp> 29 #include <boost/type_traits/is_same.hpp> 54 std::istream&
getvector(std::istream&
is, std::vector<T>& result,
55 char delim,
char newlinedelim=
'\n');
64 std::istream&
getvector(std::istream&
is, std::vector<T>& result,
65 const std::string& delim,
char newlinedelim=
'\n');
72 void convert(std::vector<std::string>&& vec,
73 std::vector<T>& result, boost::true_type is_string)
75 result = std::move(vec);
80 void convert(
const std::vector<std::string>& vec,
81 std::vector<T>& result, boost::false_type is_string)
84 result.reserve(vec.size());
85 for (
const std::string& v : vec)
86 result.push_back(utility::convert<T>(v));
93 template<
typename Predicate,
typename T>
94 std::istream&
getvector(std::istream&
is, std::vector<T>& result,
95 Predicate pred,
char delim)
97 if (
is.good() ==
false)
99 std::vector<std::string> vec;
104 vec.push_back(std::move(word));
113 if (vec.empty() && word==
"" &&
is.good()==
false)
115 vec.push_back(std::move(word));
117 typename boost::is_same<T, std::string> is_string;
118 convert(std::move(vec), result, is_string);
127 char delim,
char newlinedelim)
129 return detail::getvector(
is, result, [delim](
char c) {
return c==delim; },
136 const std::string& delim,
char newlinedelim)
138 return detail::getvector(
is, result, boost::is_any_of(delim), newlinedelim);
bool is(const std::string &s)
check if string is convertible to (numerical) type T
Definition: utility.h:733
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:126
std::string convert(T input)
convert T to a string
Definition: utility.h:673