31         outStr.begin(), outStr.end(),  
    33         (int (*)(int))tolower);
    44         outStr.begin(), outStr.end(),  
    46         (int (*)(int))toupper);
    58 #define MASK2BYTES 0xC0    59 #define MASK3BYTES 0xE0    60 #define MASK4BYTES 0xF0    61 #define MASK5BYTES 0xF8    62 #define MASK6BYTES 0xFC    65     const std::vector<uint16_t>& input, std::string& output)
    68     output.reserve(input.size());
    69     for (
unsigned short i : input)
    99     const std::string& input, std::vector<uint16_t>& output)
   102     output.reserve(input.size());
   103     for (
size_t i = 0; i < input.size();)
   110             ch = ((input[i] & 0x0F) << 12) | ((input[i + 1] & 
MASKBITS) << 6) |
   117             ch = ((input[i] & 0x1F) << 6) | (input[i + 1] & 
MASKBITS);
   121         else if (uint8_t(input[i]) < 
MASKBYTE)
   126         output.push_back(ch);
   137     const double val, 
int nDecimalDigits, 
bool middle_space)
   141     const double aVal = std::abs(
val);
   148     else if (aVal >= 1e9)
   153     else if (aVal >= 1e6)
   158     else if (aVal >= 1e3)
   168     else if (aVal >= 1e-3)
   173     else if (aVal >= 1e-6)
   178     else if (aVal >= 1e-9)
   190         middle_space ? 
"%.*f %c" : 
"%.*f%c", nDecimalDigits, 
val * mult,
   198     char* str, 
const char* strDelimit, 
char** context) noexcept
   200 #if defined(_MSC_VER) && (_MSC_VER >= 1400)   202     return ::strtok_s(str, strDelimit, context);
   206     return ::strtok_r(str, strDelimit, context);
   214 template <
class CONTAINER>
   216     const std::string& inString, 
const std::string& inDelimiters,
   217     CONTAINER& outTokens, 
bool skipBlankTokens) noexcept
   221     const size_t len = inString.size();
   222     bool prev_was_delim = 
true;
   223     std::string cur_token;
   224     for (
size_t pos = 0; pos <= len; pos++)  
   237             cur_is_delim = (inDelimiters.find(c) != string::npos);
   243                 if (!skipBlankTokens) outTokens.push_back(std::string());
   247                 outTokens.push_back(cur_token);
   253             cur_token.push_back(c);
   255         prev_was_delim = cur_is_delim;
   260 template void mrpt::system::tokenize<std::deque<std::string>>(
   261     const std::string& inString, 
const std::string& inDelimiters,
   262     std::deque<std::string>& outTokens, 
bool skipBlankTokens) noexcept;
   263 template void mrpt::system::tokenize<std::vector<std::string>>(
   264     const std::string& inString, 
const std::string& inDelimiters,
   265     std::vector<std::string>& outTokens, 
bool skipBlankTokens) noexcept;
   274         return std::string();
   278         size_t s = str.find_first_not_of(
" \t");
   279         size_t e = str.find_last_not_of(
" \t");
   280         if (s == std::string::npos || e == std::string::npos)
   281             return std::string();
   283             return str.substr(s, e - s + 1);
   291     const std::string& str, 
const size_t total_len, 
bool truncate_if_larger)
   294     if (r.size() < total_len || truncate_if_larger) r.resize(total_len, 
' ');
   315         s1.c_str(), s2.c_str(),
   324         s1.c_str(), s2.c_str(),
   328 template <
typename STRING_LIST>
   330     const STRING_LIST& lst, std::string& outText, 
const std::string& newline)
   332     const size_t lenNL = newline.size();
   335     size_t totalLen = lst.size() * lenNL;
   336     for (
const auto& s : lst) totalLen += s.size();
   338     outText.resize(totalLen);
   342     for (
const auto& s : lst)
   345             &outText[curPos], totalLen, s.c_str(), s.size());
   347         for (
const auto& sNL : newline) outText[curPos++] = sNL;
   352     const std::vector<std::string>& lst, std::string& outText,
   353     const std::string& newLine)
   359     const std::deque<std::string>& lst, std::string& outText,
   360     const std::string& newLine)
 
std::string std::string format(std::string_view fmt, ARGS &&... args)
 
int _strncmp(const char *str, const char *subStr, size_t count) noexcept
An OS-independent version of strncmp. 
 
bool strStartsI(const std::string &str, const std::string &subStr)
Return true if "str" starts with "subStr" (case insensitive) 
 
int _strnicmp(const char *str, const char *subStr, size_t count) noexcept
An OS-independent version of strnicmp. 
 
void decodeUTF8(const std::string &strUTF8, std::vector< uint16_t > &out_uniStr)
Decodes a UTF-8 string into an UNICODE string. 
 
bool strCmp(const std::string &s1, const std::string &s2)
Return true if the two strings are equal (case sensitive) 
 
void stringListAsString(const std::vector< std::string > &lst, std::string &out, const std::string &newline="\")
Convert a string list to one single string with new-lines. 
 
void encodeUTF8(const std::vector< uint16_t > &input, std::string &output)
Encodes a 2-bytes UNICODE string into a UTF-8 string. 
 
void tokenize(const std::string &inString, const std::string &inDelimiters, OUT_CONTAINER &outTokens, bool skipBlankTokens=true) noexcept
Tokenizes a string according to a set of delimiting characters. 
 
std::string lowerCase(const std::string &str)
Returns an lower-case version of a string. 
 
char * strtok(char *str, const char *strDelimit, char **context) noexcept
An OS-independent method for tokenizing a string. 
 
std::string unitsFormat(const double val, int nDecimalDigits=2, bool middle_space=true)
This function implements formatting with the appropriate SI metric unit prefix: 1e-12->'p', 1e-9->'n', 1e-6->'u', 1e-3->'m', 1->'', 1e3->'K', 1e6->'M', 1e9->'G', 1e12->'T'. 
 
std::string upperCase(const std::string &str)
Returns a upper-case version of a string. 
 
bool strStarts(const std::string &str, const std::string &subStr)
Return true if "str" starts with "subStr" (case sensitive) 
 
std::string trim(const std::string &str)
Removes leading and trailing spaces. 
 
std::string rightPad(const std::string &str, const size_t total_len, bool truncate_if_larger=false)
Enlarge the string with spaces up to the given length. 
 
static void impl_stringListAsString(const STRING_LIST &lst, std::string &outText, const std::string &newline)
 
bool strCmpI(const std::string &s1, const std::string &s2)
Return true if the two strings are equal (case insensitive) 
 
int _strcmp(const char *str1, const char *str2) noexcept
An OS-independent version of strcmp. 
 
void memcpy(void *dest, size_t destSize, const void *src, size_t copyCount) noexcept
An OS and compiler independent version of "memcpy". 
 
int _strcmpi(const char *str1, const char *str2) noexcept
An OS-independent version of strcmpi.