libzypp  13.10.6
String.h File Reference
#include <cstring>
#include <iosfwd>
#include <vector>
#include <string>
#include <sstream>
#include "zypp/base/Easy.h"
#include "zypp/base/PtrTypes.h"
#include "zypp/base/Function.h"

Go to the source code of this file.

Classes

class  zypp::C_Str
 Convenience char* constructible from std::string and char*, it maps (char*)0 to an empty string. More...
 
struct  zypp::str::SafeBuf
 Assert free called for allocated char *. More...
 
struct  zypp::str::Str
 Convenient building of std::string via std::ostream::operator<<. More...
 

Namespaces

 zypp
 Easy-to use interface to the ZYPP dependency resolver.
 
 zypp::str
 String related utilities and Regular expression matching.
 

Functions

template<class _Tp >
std::string zypp::asUserString (const _Tp &val_r)
 Request a human readable (translated) string representation of _Tp [_Tp.asUserString()] Classes may implement a default as member function. More...
 
std::string zypp::str::asString (const std::string &t)
 Global asString() that works with std::string too. More...
 
std::string zypp::str::asString (const char *t)
 
std::string zypp::str::asString (char *t)
 
template<class _T >
std::string zypp::str::asString (const _T &t)
 
template<class _T >
std::string zypp::str::asString (const intrusive_ptr< _T > &p)
 
template<class _T >
std::string zypp::str::asString (const weak_ptr< _T > &p)
 
template<>
std::string zypp::str::asString (const bool &t)
 
std::string zypp::str::form (const char *format,...) __attribute__((format(printf
 Printf style construction of std::string. More...
 
std::string zypp::str::strerror (int errno_r)
 Return string describing the error_r code. More...
 
std::string zypp::str::gsub (const std::string &str_r, const std::string &from_r, const std::string &to_r)
 Return a string with all occurrences of from_r replaced with to_r. More...
 
std::string zypp::str::gsubFun (const std::string &str_r, const std::string &from_r, function< std::string()> to_r)
 
std::string & zypp::str::replaceAll (std::string &str_r, const std::string &from_r, const std::string &to_r)
 Replace all occurrences of from_r with to_r in str_r (inplace). More...
 
std::string & zypp::str::replaceAllFun (std::string &str_r, const std::string &from_r, function< std::string()> to_r)
 
std::string zypp::str::stripFirstWord (std::string &line, const bool ltrim_first)
 
std::string zypp::str::stripLastWord (std::string &line, const bool rtrim_first)
 
std::string zypp::str::getline (std::istream &str, bool trim=false)
 Return stream content up to (but not returning) the next newline. More...
 
std::string zypp::str::getline (std::istream &str, const Trim trim_r)
 Return stream content up to (but not returning) the next newline. More...
 
std::string zypp::str::receiveUpTo (std::istream &str, const char delim_r, bool returnDelim_r=false)
 Return stream content up to the next ocurrence of delim_r or EOF delim_r, if found, is always read from the stream. More...
 
String representation of number.

Optional second argument sets the minimal string width (' ' padded).

Negative values will cause the number to be left adjusted within the string.

Default width is 0.

* numstring(42) -> "42"
* numstring(42, 4) -> " 42"
* numstring(42,-4) -> "42 "
*
std::string zypp::str::numstring (char n, int w=0)
 
std::string zypp::str::numstring (unsigned char n, int w=0)
 
std::string zypp::str::numstring (short n, int w=0)
 
std::string zypp::str::numstring (unsigned short n, int w=0)
 
std::string zypp::str::numstring (int n, int w=0)
 
std::string zypp::str::numstring (unsigned n, int w=0)
 
std::string zypp::str::numstring (long n, int w=0)
 
std::string zypp::str::numstring (unsigned long n, int w=0)
 
std::string zypp::str::numstring (long long n, int w=0)
 
std::string zypp::str::numstring (unsigned long long n, int w=0)
 
template<>
std::string zypp::str::asString (const char &t)
 
template<>
std::string zypp::str::asString (const unsigned char &t)
 
template<>
std::string zypp::str::asString (const short &t)
 
template<>
std::string zypp::str::asString (const unsigned short &t)
 
template<>
std::string zypp::str::asString (const int &t)
 
template<>
std::string zypp::str::asString (const unsigned &t)
 
template<>
std::string zypp::str::asString (const long &t)
 
template<>
std::string zypp::str::asString (const unsigned long &t)
 
template<>
std::string zypp::str::asString (const long long &t)
 
template<>
std::string zypp::str::asString (const unsigned long long &t)
 
String representation of number as hex value with leading '0x'.

Optional second argument sets the minimal string width (0 padded).

Negative values will cause the number to be left adjusted within the string. Default width is 10 (4 for char).

hexstring(42)           -> "0x0000002a"
hexstring(42, 4)        -> "0x2a"
hexstring(42,-4)        -> "0x2a"
std::string zypp::str::hexstring (char n, int w=4)
 
std::string zypp::str::hexstring (unsigned char n, int w=4)
 
std::string zypp::str::hexstring (short n, int w=10)
 
std::string zypp::str::hexstring (unsigned short n, int w=10)
 
std::string zypp::str::hexstring (int n, int w=10)
 
std::string zypp::str::hexstring (unsigned n, int w=10)
 
std::string zypp::str::hexstring (long n, int w=10)
 
std::string zypp::str::hexstring (unsigned long n, int w=10)
 
std::string zypp::str::hexstring (long long n, int w=0)
 
std::string zypp::str::hexstring (unsigned long long n, int w=0)
 
String representation of number as octal value with leading '0'.

Optional second argument sets the minimal string width (0 padded).

Negative values will cause the number to be left adjusted within the string. Default width is 5 (4 for char).

octstring(42)           -> "00052"
octstring(42, 4)        -> "0052"
octstring(42,-4)        -> "052 "
std::string zypp::str::octstring (char n, int w=4)
 
std::string zypp::str::octstring (unsigned char n, int w=4)
 
std::string zypp::str::octstring (short n, int w=5)
 
std::string zypp::str::octstring (unsigned short n, int w=5)
 
std::string zypp::str::octstring (int n, int w=5)
 
std::string zypp::str::octstring (unsigned n, int w=5)
 
std::string zypp::str::octstring (long n, int w=5)
 
std::string zypp::str::octstring (unsigned long n, int w=5)
 
std::string zypp::str::octstring (long long n, int w=0)
 
std::string zypp::str::octstring (unsigned long long n, int w=0)
 
template<typename _It >
_It zypp::str::strtonum (const C_Str &str)
 Parsing numbers from string. More...
 
template<>
short zypp::str::strtonum (const C_Str &str)
 Parsing numbers from string. More...
 
template<>
int zypp::str::strtonum (const C_Str &str)
 Parsing numbers from string. More...
 
template<>
long zypp::str::strtonum (const C_Str &str)
 Parsing numbers from string. More...
 
template<>
long long zypp::str::strtonum (const C_Str &str)
 Parsing numbers from string. More...
 
template<>
unsigned short zypp::str::strtonum (const C_Str &str)
 Parsing numbers from string. More...
 
template<>
unsigned zypp::str::strtonum (const C_Str &str)
 Parsing numbers from string. More...
 
template<>
unsigned long zypp::str::strtonum (const C_Str &str)
 Parsing numbers from string. More...
 
template<>
unsigned long long zypp::str::strtonum (const C_Str &str)
 Parsing numbers from string. More...
 
template<typename _It >
_It zypp::str::strtonum (const C_Str &str, _It &i)
 String to integer type detemined 2nd function arg i. More...
 
bool zypp::str::strToTrue (const C_Str &str)
 Parsing boolean from string. More...
 
bool zypp::str::strToFalse (const C_Str &str)
 Return false if str is 0, false, no, off. More...
 
bool zypp::str::strToBool (const C_Str &str, bool default_r)
 Parse str into a bool depending on the default value. More...
 
bool zypp::str::strToBoolNodefault (const C_Str &str, bool &return_r)
 Parse str into a bool if it's a legal true or false string. More...
 
Split.
template<class _OutputIterator >
unsigned zypp::str::split (const C_Str &line_r, _OutputIterator result_r, const C_Str &sepchars_r=" \t")
 Split line_r into words. More...
 
template<class _OutputIterator >
unsigned zypp::str::splitEscaped (const C_Str &line_r, _OutputIterator result_r, const C_Str &sepchars_r=" \t", bool withEmpty=false)
 Split line_r into words with respect to escape delimeters. More...
 
template<class _OutputIterator >
unsigned zypp::str::splitFields (const C_Str &line_r, _OutputIterator result_r, const C_Str &sepchars_r=":")
 Split line_r into fields. More...
 
template<class _OutputIterator >
unsigned zypp::str::splitFieldsEscaped (const C_Str &line_r, _OutputIterator result_r, const C_Str &sepchars_r=":")
 Split line_r into fields handling also escaped separators. More...
 
Join.
template<class _Iterator >
std::string zypp::str::join (_Iterator begin, _Iterator end, const C_Str &sep_r=" ")
 Join strings using separator sep_r (defaults to BLANK). More...
 
template<class _Container >
std::string zypp::str::join (const _Container &cont_r, const C_Str &sep_r=" ")
 Join strings using separator sep_r (defaults to BLANK). More...
 
template<class _Iterator >
std::string zypp::str::joinEscaped (_Iterator begin, _Iterator end, const char sep_r= ' ')
 Join strings using separator sep_r, quoting or escaping the values. More...
 
Escape.
std::string zypp::str::escape (const C_Str &str_r, const char c= ' ')
 Escape desired character c using a backslash. More...
 
void zypp::str::appendEscaped (std::string &str_r, const C_Str &next_r, const char sep_r= ' ')
 Escape next_r and append it to str_r using separator sep_r. More...
 
Hexencode.

Encode all characters other than [a-zA-Z0-9] as XX.

Todo:
unsecape()

This includes the % character itself, which becomes %25.

std::string zypp::str::hexencode (const C_Str &str_r)
 Encode all characters other than [a-zA-Z0-9] as XX. More...
 
std::string zypp::str::hexdecode (const C_Str &str_r)
 Decode hexencoded XX sequences. More...
 
Case conversion.
std::string zypp::str::toLower (const std::string &s)
 Return lowercase version of s. More...
 
std::string zypp::str::toLower (const char *s)
 
std::string zypp::str::toUpper (const std::string &s)
 Return uppercase version of s. More...
 
std::string zypp::str::toUpper (const char *s)
 
Case insensitive comparison.
int zypp::str::compareCI (const C_Str &lhs, const C_Str &rhs)
 
Locate substring.
bool zypp::str::contains (const C_Str &str_r, const C_Str &val_r)
 Locate substring case sensitive. More...
 
bool zypp::str::containsCI (const C_Str &str_r, const C_Str &val_r)
 Locate substring case insensitive. More...
 
String prefix/suffix handling.
bool zypp::str::hasPrefix (const C_Str &str_r, const C_Str &prefix_r)
 Return whether str_r has prefix prefix_r. More...
 
std::string zypp::str::stripPrefix (const C_Str &str_r, const C_Str &prefix_r)
 Strip a prefix_r from str_r and return the resulting string. More...
 
bool zypp::str::hasSuffix (const C_Str &str_r, const C_Str &suffix_r)
 Return whether str_r has suffix suffix_r. More...
 
std::string zypp::str::stripSuffix (const C_Str &str_r, const C_Str &suffix_r)
 Strip a suffix_r from str_r and return the resulting string. More...
 
std::string::size_type zypp::str::commonPrefix (const C_Str &lhs, const C_Str &rhs)
 Return size of the common prefix of lhs and rhs. More...
 
bool zypp::str::startsWith (const C_Str &str_r, const C_Str &prefix_r)
 alias for hasPrefix More...
 
bool zypp::str::endsWith (const C_Str &str_r, const C_Str &prefix_r)
 alias for hasSuffix More...
 

Trimming whitepace.

Todo:
optimize l/r trim.
enum  zypp::str::Trim { zypp::str::NO_TRIM = 0x00, zypp::str::L_TRIM = 0x01, zypp::str::R_TRIM = 0x02, zypp::str::TRIM = (L_TRIM|R_TRIM) }
 To define how to trim. More...
 
std::string zypp::str::trim (const std::string &s, const Trim trim_r)
 
std::string zypp::str::ltrim (const std::string &s)
 
std::string zypp::str::rtrim (const std::string &s)