libStatGen Software
1
|
This file is inspired by the poor quality of string support in STL for what should be trivial capabiltiies, for example setting or appending the ASCII representation of a floating point or integer number to a string. More...
Functions | |
int | Tokenize (std::vector< std::string > &result, const char *input, char delimiter) |
std::string & | append (std::string &s, float f) |
use std streams API to do float conversion to string, then append it. | |
std::string & | append (std::string &s, double f) |
use std streams API to do double conversion to string, then append it. | |
std::string & | append (std::string &s, char c) |
The rest we can handle readily ourselves. | |
std::string & | append (std::string &s, unsigned char c) |
Similar to signed char case, but this time for unsigned. | |
std::string & | append (std::string &s, const char *rhs) |
Now append a full C style NUL terminated string to the std::string. | |
std::string & | append (std::string &s, std::string &rhs) |
Prevent the generic template from picking up std::string. | |
template<typename T > | |
std::string & | append (std::string &s, std::vector< T > v, std::string separator="") |
iterate over the provided vector, appending all elements with an optional separator | |
template<typename T > | |
std::string & | append (std::string &s, T i) |
This template handles the rest of the cases for integral types. | |
std::string & | operator<< (std::string &s, char c) |
std::string & | operator<< (std::string &s, unsigned char c) |
std::string & | operator<< (std::string &s, uint64_t i) |
std::string & | operator<< (std::string &s, int64_t i) |
template<typename T > | |
std::string & | operator<< (std::string &s, T val) |
template<typename S > | |
std::string & | append (std::string &s, std::vector< std::string > v, S delimeter, bool itemize=false) |
template<typename T , typename S > | |
std::string & | append (std::string &s, std::vector< T > v, S delimeter, bool itemize=false) |
This file is inspired by the poor quality of string support in STL for what should be trivial capabiltiies, for example setting or appending the ASCII representation of a floating point or integer number to a string.
This file uses variadic templates to implement a type safe version (subset) of C-library printf.
Therefore, -std=c++0x is a required option on g++
std::string& STLUtilities::append | ( | std::string & | s, |
char | c | ||
) | [inline] |
The rest we can handle readily ourselves.
Unlike std::string operator +, this operator treats c as a character and appends the ASCII character c.
Definition at line 75 of file STLUtilities.h.
{
s += c;
return s;
}
std::string& STLUtilities::append | ( | std::string & | s, |
T | i | ||
) |
This template handles the rest of the cases for integral types.
Not user friendly if you pass in a type T that is for example a std::vector.
Definition at line 128 of file STLUtilities.h.
{ char digits[20]; char *p = digits; bool negative = false; if (i<0) { negative = true; i = -i; } do { *p++ = '0' + i % 10; i = i/10; } while (i); if (negative) s += '-'; do { s += *--p; } while (p > digits); return s; }