25#ifndef __BITPIT_STRING_UTILS_TPP__
26#define __BITPIT_STRING_UTILS_TPP__
46inline std::string &
ltrim(std::string &s)
56 s.erase(s.begin(), std::find_if(s.begin(), s.end(), [](
unsigned char c){ return !std::isspace(c); }));
72inline std::string &
rtrim(std::string &s)
82 s.erase(std::find_if(s.rbegin(), s.rend(), [](
unsigned char c){ return !std::isspace(c); }).base(), s.end());
98inline std::string &
trim(std::string &s)
115inline std::string
lfill(
int nchars,
const std::string &s,
char c)
117 std::stringstream ss;
118 ss << std::string(nchars - s.length(), c) << s;
135inline std::string
rfill(
int nchars,
const std::string &s,
char c)
137 std::stringstream ss;
138 ss << s << std::string(nchars - s.length(), c);
160 std::ostringstream ss;
161 ss << std::setw(nchars) << std::setfill(
'0') << num;
177 return (line.find(key) != std::string::npos);
197 std::size_t nValues = 0;
198 std::stringstream ss(input);
203 std::cout <<
" more than one element in string " << input << std::endl;
204 std::cout <<
" assigning first element " << std::endl;
213 std::cout <<
" no useful information in string " << input << std::endl;
214 std::cout <<
" casting zero " << std::endl;
237 std::stringstream ss(input);
243 output.push_back(std::move(x));
246 if (output.empty()) {
247 std::cout <<
" no useful information in string " << input << std::endl;
248 std::cout <<
" returning empty vector " << std::endl;
266template <
class T,
size_t n>
269 std::size_t nValues = 0;
270 std::stringstream ss(input);
275 std::cout <<
" more than " << n <<
" elements in string " << input << std::endl;
276 std::cout <<
" assigning first " << n <<
" elements " << std::endl;
280 ss >> output[nValues - 1];
285 std::cout <<
" not enough useful information in string " << input << std::endl;
286 std::cout <<
" casting zero into missing elements " << std::endl;
288 for(
size_t i=nValues; i<n; i++) {
std::string & trim(std::string &s)
std::string rfill(int nchars, const std::string &s, char c)
std::string zeroPadNumber(int nchars, int num)
std::string & ltrim(std::string &s)
bool keywordInString(const std::string &line, const std::string &key)
void convertString(const std::string &input, T &output)
std::string lfill(int nchars, const std::string &s, char c)
std::string & rtrim(std::string &s)
Namespace for string utility functions.
Namespace for generic utility functions.