1 #include "string_utils.h"    12             auto front = std::find_if(str.begin(), str.end(), [](
int c) { 
return !std::isspace(c); });
    13             return std::string(front, str.end());
    18             auto back = std::find_if(str.rbegin(), str.rend(), [](
int c) { 
return !std::isspace(c); }).base();
    19             return std::string(str.begin(), back);
    22         std::string 
trim(
const std::string &str)
    24             auto front = std::find_if(str.begin(), str.end(), [](
int c) { 
return !std::isspace(c); });
    25             auto back = std::find_if(str.rbegin(), str.rend(), [](
int c) { 
return !std::isspace(c); }).base();
    30             return std::string(front, back);
    33         bool find_needle(
const std::string &haystack, 
const std::string &needle)
    35             return (haystack.find(needle) == std::string::npos ? 
false : 
true);
    38         bool starts_with(
const std::string &str, 
const std::string &search_str)
    40             size_t search_str_length = search_str.length();
    42             if (search_str_length > str.length()) {
    46             for (
size_t i = 0; i < search_str_length; ++i) {
    47                 if (str[i] != search_str[i]) {
    55         bool ends_with(
const std::string &str, 
const std::string &search_str)
    57             size_t search_str_length = search_str.length();
    58             size_t str_length = str.length();
    60             if (search_str_length > str.length()) {
    64             for (
size_t i = 0; i < search_str_length; ++i) {
    65                 if (str[str_length - i - 1] != search_str[search_str_length - i - 1]) {
    73         std::vector<std::string> 
split(
const std::string &str, 
char delim)
    75             std::vector<std::string> result;
    76             std::stringstream stream(str);
    79             while (std::getline(stream, item, delim)) {
    80                 result.push_back(item);
    92             if (value == 
"0" || value == 
"f" || value == 
"n" || value == 
"off" || value == 
"no" ||
    93                 value == 
"disabled") {
    95             } 
else if (value == 
"1" || value == 
"t" || value == 
"y" || value == 
"on" || value == 
"yes" ||
   100                     "Option '" + option_name + 
"' parsing failed: String '" + value + 
"' is not valid boolean type.");
   112                 return std::stod(value);
   113             } 
catch (std::exception &e) {
   121                 std::string binary_prefix = 
"0b";
   122                 if (std::equal(binary_prefix.begin(), binary_prefix.end(), value.begin())) {
   124                     return std::stoll(value.substr(2), 0, 2);
   127                     return std::stoll(value, 0, 0);
   129             } 
catch (std::exception &e) {
   138                 std::string binary_prefix = 
"0b";
   139                 if (std::equal(binary_prefix.begin(), binary_prefix.end(), value.begin())) {
   141                     return std::stoull(value.substr(2), 0, 2);
   144                     return std::stoull(value, 0, 0);
   146             } 
catch (std::exception &e) {
   156             return static_cast<std::string
>(value);
 float_ini_t parse_string< float_ini_t >(const std::string &value, const std::string &option_name)
 
std::string trim(const std::string &str)
 
signed_ini_t parse_string< signed_ini_t >(const std::string &value, const std::string &option_name)
 
std::string right_trim(const std::string &str)
 
bool starts_with(const std::string &str, const std::string &search_str)
 
string_ini_t parse_string< string_ini_t >(const std::string &value, const std::string &)
 
bool ends_with(const std::string &str, const std::string &search_str)
 
std::string to_string(const enum_ini_t &value)
 
unsigned_ini_t parse_string< unsigned_ini_t >(const std::string &value, const std::string &option_name)
 
std::vector< std::string > split(const std::string &str, char delim)
 
enum_ini_t parse_string< enum_ini_t >(const std::string &value, const std::string &option_name)
 
boolean_ini_t parse_string< boolean_ini_t >(const std::string &value, const std::string &option_name)
 
bool find_needle(const std::string &haystack, const std::string &needle)
 
std::string left_trim(const std::string &str)