29#ifndef ioutils_stringUtils_hpp
30#define ioutils_stringUtils_hpp
38#include "../mxlib.hpp"
82template <
typename typeT,
unsigned w
idth = 0,
char pad = ' '>
90 std::ostringstream convert;
92 if( std::is_floating_point<typeT>::value )
96 convert.precision( std::numeric_limits<typeT>::max_digits10 );
100 convert.precision( precision );
108 return convert.str();
112 std::string c = convert.str();
114 if( c.length() > width )
116 c.erase( width, c.length() - width );
120 return std::string( width - c.length(), pad ) + c;
126std::string convertToString<std::string>(
const std::string &value,
int precision );
143template <
typename typeT>
151char convertFromString<char>(
const std::string &str );
154char16_t convertFromString<char16_t>(
const std::string &str );
157char32_t convertFromString<char32_t>(
const std::string &str );
160wchar_t convertFromString<wchar_t>(
const std::string &str );
163signed char convertFromString<signed char>(
const std::string &str );
166unsigned char convertFromString<unsigned char>(
const std::string &str );
169short convertFromString<short>(
const std::string &str );
172unsigned short convertFromString<unsigned short>(
const std::string &str );
175int convertFromString<int>(
const std::string &str );
178unsigned int convertFromString<unsigned int>(
const std::string &str );
181long convertFromString<long>(
const std::string &str );
184unsigned long convertFromString<unsigned long>(
const std::string &str );
187long long convertFromString<long long>(
const std::string &str );
190unsigned long long convertFromString<unsigned long long>(
const std::string &str );
193float convertFromString<float>(
const std::string &str );
196double convertFromString<double>(
const std::string &str );
199long double convertFromString<long double>(
const std::string &str );
214void toLower( std::string &outstr,
215 const std::string &instr
224std::string
toLower(
const std::string &instr );
230void toUpper( std::string &outstr,
231 const std::string &instr
240std::string
toUpper(
const std::string &instr );
247 const std::string &instr
261int stringWrap( std::vector<std::string> &lines,
263 const std::string &str,
281template <
typename typeT>
283 std::vector<typeT> &v,
284 const std::string &s,
292 com = s.find( delim, st );
296 while( com != std::string::npos )
298 v.push_back( convertFromString<typeT>( s.substr( st, com - st ) ) );
300 com = s.find( delim, st );
302 v.push_back( convertFromString<typeT>( s.substr( st, s.size() - st ) ) );
319template <
typename typeT>
321 std::vector<typeT> &v,
322 const std::string &s,
323 const std::string &delims
330 com = s.find_first_of( delims, st );
334 while( com != std::string::npos )
336 v.push_back( convertFromString<typeT>( s.substr( st, com - st ) ) );
338 com = s.find_first_of( delims, st );
340 v.push_back( convertFromString<typeT>( s.substr( st, s.size() - st ) ) );
void toUpper(std::string &outstr, const std::string &instr)
Convert a string to all upper case.
int stringWrap(std::vector< std::string > &lines, const std::string &str, int width)
Wrap a string by breaking it into smaller sized portions of a desired width.
void toLower(std::string &outstr, const std::string &instr)
Convert a string to all lower case.
std::string convertToString(const typeT &value, int precision=0)
Convert a numerical value to a string.
void parseStringVector(std::vector< typeT > &v, const std::string &s, char delim=',')
Parses a string into a vector of tokens delimited by a character.
typeT convertFromString(const std::string &str)
Convert a string to a numerical value.
bool convertFromString< bool >(const std::string &str)
Template specialization of convertFromString for bool.
void removeWhiteSpace(std::string &outstr, const std::string &instr)
Remove all white space from a string.