chsvlib
chsv helper source code
Chusov::String Namespace Reference

A namespace of string manipulation functions and classes. More...

Classes

struct  TAG_DESCRIPTION_PARAM
 A structure defining a set of parameters for the AllocateAndFormatStringByTagsIndirect() "AllocateAndFormatStringByTagsIndirect" function to specify format of the output string with a given set of tags. More...
 
struct  AutoCString
 A template of a class specifying std::unique_ptr to manage multibyte and wide C strings allocated using one of the allocation functions of the chsvmem.h header, such as AllocateString, AllocateAndFormatString or AllocateAndFormatStringByTags. A class template instance deallocates corresponding memory using the FreeString function or its derivatives. More...
 
struct  ci_char_traits
 Redefines the char_traits interface in order to process strings independently of character case. More...
 
class  u8_ch_data
 Holds attributes, including Unicode code point, of a one multi-byte UTF-8 character with the read_u8_char_data function. More...
 
struct  u8_array_from_ucp
 A class template which for a given Unicode code point statically defines a constant array holding the corresponding UTF-8 code. More...
 
struct  ucp_literal_type
 Implements a string literal of Unicode 11.0 code points. More...
 
struct  from_chars_result
 A type of the return value of the from_chars family of functions. More...
 

Typedefs

typedef unsigned int ucp_t
 An type of a Unicode code point. It is an unsigned integral type capable for storing at least 4 bytes.
 
typedef std::basic_string< char, std::char_traits< char >, ::Chusov::Memory::allocator< char > > string
 An instantiation of the standard basic_string class template for handling multi-byte strings allocated and freed by functions that facilitate the Chusov::Memory::AllocateData and Chusov::Memory::FreeData functions, e.g. AllocateStringA or FreeStringA.
 
typedef std::basic_string< wchar_t, std::char_traits< wchar_t >, ::Chusov::Memory::allocator< wchar_t > > wstring
 An instantiation of the standard basic_string class template for handling wide strings allocated and freed by functions that facilitate the Chusov::Memory::AllocateData and Chusov::Memory::FreeData functions, e.g. AllocateStringW or FreeStringW.
 
typedef std::basic_string< char, std::char_traits< char >, ::Chusov::Memory::secure_allocator< char > > string_s
 An instantiation of the standard basic_string class template for handling multi-byte strings allocated and securely freed by AllocateStringA and SecureFreeStringA.
 
typedef std::basic_string< wchar_t, std::char_traits< wchar_t >, ::Chusov::Memory::secure_allocator< wchar_t > > wstring_s
 An instantiation of the standard basic_string class template for handling wide strings allocated and securely freed by AllocateStringW and SecureFreeStringW.
 
typedef std::basic_string< char, ci_char_traits< char > > ci_string
 A typedef for case-independent variant of std::basic_string specialized for multibyte characters. More...
 
typedef std::basic_string< wchar_t, ci_char_traits< wchar_t > > ci_wstring
 A typedef for case-independent wide variant of std::basic_string specialized for wide characters. More...
 
typedef std::basic_string_view< char, ci_char_traits< char > > ci_string_view
 A typedef for a case-independent variant of std::basic_string_view specialized for multibyte characters. More...
 
typedef std::basic_string_view< wchar_t, ci_char_traits< wchar_t > > ci_wstring_view
 A typedef for a case-independent variant of std::basic_string_view specialized for wide characters. More...
 
typedef std::basic_string< ucp_t, std::char_traits< ucp_t >, std::allocator< ucp_t > > ucp_string
 Implements a C++ string object with characters of type ucp_t encoding Unicode 11.0 code points. More...
 
typedef std::basic_string< ucp_t, ci_char_traits< ucp_t > > ci_ucp_string
 Implements a C++ case-independent string object with characters of type ucp_t encoding Unicode 11.0 code points. More...
 
typedef std::basic_string_view< ucp_t, std::char_traits< ucp_t > > ucp_string_view
 Implements a C++ string view object with characters of type ucp_t encoding Unicode 11.0 code points. More...
 
typedef std::basic_string_view< ucp_t, ci_char_traits< ucp_t > > ci_ucp_string_view
 Implements a case-independent C++ string view object with characters of type ucp_t encoding Unicode 11.0 code points. More...
 

Functions

int vfPrintfA (::FILE *restrict stream, const char *restrict pszFormat, va_list ap) noexcept
 Loads data from the locations, defined by ap, converts it to multibyte string equivalents and writes the results to a file stream. More...
 
int vfPrintfW (::FILE *restrict stream, const wchar_t *restrict pszFormat, va_list ap) noexcept
 Loads data from the locations, defined by ap, converts it to wide string equivalents and writes the results to a file stream. More...
 
int vfPrintfA_s (::FILE *restrict stream, const char *restrict pszFormat, va_list ap) noexcept
 The function behaves identically to vfPrintfA but with some security enhancements. More...
 
int vfPrintfW_s (::FILE *restrict stream, const wchar_t *restrict pszFormat, va_list ap) noexcept
 The function behaves identically to vfPrintfW but with some security enhancements. More...
 
int fPrintfA (::FILE *restrict stream, const char *restrict pszFormat,...) noexcept
 Loads the data from the given locations, converts it to multibyte string equivalents and writes the results to a stream. More...
 
int fPrintfW (::FILE *restrict stream, const wchar_t *restrict pszFormat,...) noexcept
 Loads the data from the given locations, converts it to wide string equivalents and writes the results to a stream. More...
 
int fPrintfA_s (::FILE *restrict stream, const char *restrict pszFormat,...) noexcept
 The function behaves identically to fPrintfA but with some security enhancements. More...
 
int fPrintfW_s (::FILE *restrict stream, const wchar_t *restrict pszFormat,...) noexcept
 The function behaves identically to fPrintfW but with some security enhancements. More...
 
int vPrintfA (const char *restrict pszFormat, va_list ap) noexcept
 Loads the data from the given locations, converts it to multibyte string equivalents and writes the results to stdout. More...
 
int vPrintfW (const wchar_t *restrict pszFormat, va_list ap) noexcept
 Loads data from the locations, defined by ap, converts it to wide string equivalents and writes the results to stdout. More...
 
int vPrintfA_s (const char *restrict pszFormat, va_list ap) noexcept
 The function behaves identically to vPrintfA but with some security enhancements. More...
 
int vPrintfW_s (const wchar_t *restrict pszFormat, va_list ap) noexcept
 The function behaves identically to vPrintfW but with some security enhancements. More...
 
int PrintfA (const char *restrict pszFormat,...) noexcept
 Loads data from the locations, defined by a variable arguments, converts it to string equivalents and writes the results to stdout. More...
 
int PrintfW (const wchar_t *restrict pszFormat,...) noexcept
 Loads data from the locations, defined by a variable arguments, converts it to wide string equivalents and writes the results to stdout. More...
 
int PrintfA_s (const char *restrict pszFormat,...) noexcept
 The function behaves identically to PrintfA but with security constraints. More...
 
int PrintfW_s (const wchar_t *restrict pszFormat,...) noexcept
 The function behaves identically to PrintfW but with security constraints. More...
 
int vsPrintfA (char *restrict pDest, const char *restrict pszFormat, va_list ap) noexcept
 Loads the data from the given locations, converts it to multibyte string equivalents and writes the results to a string buffer. More...
 
int vsPrintfW (wchar_t *restrict pDest, std::size_t cchDest, const wchar_t *restrict pszFormat, va_list ap) noexcept
 Loads the data from the given locations, converts it to wide string equivalents and writes the results to a string buffer. More...
 
int sPrintfA (char *restrict pDest, const char *restrict pszFormat,...) noexcept
 Loads the data from the given locations, converts it to multibyte string equivalents and writes the results to a string buffer. More...
 
int sPrintfW (wchar_t *restrict pDest, std::size_t cchDest, const wchar_t *restrict pszFormat,...) noexcept
 Loads the data from the given locations, converts it to wide string equivalents and writes the results to a string buffer. More...
 
int vsnPrintfA (char *restrict pDest, std::size_t cchDest, const char *restrict pszFormat, va_list ap) noexcept
 Loads the data from the given locations, converts it to multibyte string equivalents and writes the results to a string buffer. More...
 
int snPrintfA (char *restrict pDest, std::size_t cchDest, const char *restrict pszFormat,...) noexcept
 Loads the data from the given locations, converts it to multibyte string equivalents and writes the results to a string buffer. More...
 
int vsnPrintfA_s (char *restrict pDest, rsize_t cchDest, const char *restrict pszFormat, va_list ap) noexcept
 The function behaves identically to vsnPrintfA but with security constraints. More...
 
int vsnPrintfW_s (wchar_t *restrict pDest, rsize_t cchDest, const wchar_t *restrict pszFormat, va_list ap) noexcept
 The function behaves identically to vsnPrintfW but with security constraints. More...
 
int snPrintfA_s (char *restrict pDest, rsize_t cchDest, const char *restrict pszFormat,...) noexcept
 The function behaves identically to snPrintfA but with security constraints. More...
 
int snPrintfW_s (wchar_t *restrict pDest, rsize_t cchDest, const wchar_t *restrict pszFormat,...) noexcept
 The function behaves identically to snPrintfW but with security constraints. More...
 
int vsnPrintfW (wchar_t *restrict pDest, std::size_t cchDest, const wchar_t *restrict pszFormat, va_list ap) noexcept
 Loads the data from the given locations, converts it to wide string equivalents and writes the results to a string buffer. More...
 
int snPrintfW (wchar_t *restrict pDest, std::size_t cchDest, const wchar_t *restrict pszFormat,...) noexcept
 Loads the data from the given locations, converts it to wide string equivalents and writes the results to a string buffer. More...
 
int vsPrintfA_s (char *restrict pDest, rsize_t cchDest, const char *restrict pszFormat, va_list ap) noexcept
 The function behaves identically to vsPrintfA except for the parameter cchDest and the explicit constraints listed in the remarks. More...
 
int vsPrintfW_s (wchar_t *restrict pDest, rsize_t cchDest, const wchar_t *restrict pszFormat, va_list ap) noexcept
 The function behaves identically to vsPrintfW except for the explicit constraints listed in the remarks. More...
 
int sPrintfA_s (char *restrict pDest, rsize_t cchDest, const char *restrict pszFormat,...) noexcept
 The function behaves identically to sPrintfA except for the parameter cchDest and the explicit constraints listed in the remarks. More...
 
int sPrintfW_s (wchar_t *restrict pDest, rsize_t cchDest, const wchar_t *restrict pszFormat,...) noexcept
 The function behaves identically to vsPrintfW except for the explicit constraints listed in the remarks. More...
 
int vscPrintfA (const char *restrict pszFormat, va_list ap) noexcept
 Returns a number of bytes required to hold a string, given by PrintfA formatting parameters, not counting the terminating zero. More...
 
int vscPrintfW (const wchar_t *restrict pszFormat, va_list ap) noexcept
 Returns a number of wide characters required to hold a string, given by PrintfW formatting parameters, not counting the terminating zero. More...
 
int scPrintfA (const char *restrict pszFormat,...) noexcept
 Returns a number of bytes required to hold a string, given by PrintfA formatting parameters, not counting the terminating zero. More...
 
int scPrintfW (const wchar_t *restrict pszFormat,...) noexcept
 Returns a number of wide characters required to hold a string, given by PrintfW formatting parameters, not counting the terminating zero. More...
 
int vscPrintfA_s (const char *restrict pszFormat, va_list ap) noexcept
 Returns a number of bytes required to hold a string, given by formatting parameters, not counting the terminating zero. The function behaves identically to scPrintfA but with security constraints. More...
 
int vscPrintfW_s (const wchar_t *restrict pszFormat, va_list ap) noexcept
 Returns a number of wide characters required to hold a string, given by formatting parameters, not counting the terminating zero. The function behaves identically to scPrintfW but with security constraints. More...
 
int scPrintfA_s (const char *restrict pszFormat,...) noexcept
 Returns a number of bytes required to hold a string, given by formatting parameters, not counting the terminating zero. The function behaves identically to scPrintfA but with security constraints. More...
 
int scPrintfW_s (const wchar_t *restrict pszFormat,...) noexcept
 Returns a number of wide characters required to hold a string, given by formatting parameters, not counting the terminating zero. The function behaves identically to scPrintfW but with security constraints. More...
 
template<class CHAR_TYPE >
int vfPrintf (::FILE *restrict stream, const CHAR_TYPE *restrict pszFormat, va_list ap) noexcept
 Resolves to vfPrintfA or to vfPrintfW depending on the template parameter. More...
 
template<class CHAR_TYPE >
int vfPrintf_s (::FILE *restrict stream, const CHAR_TYPE *restrict pszFormat, va_list ap) noexcept
 Resolves to vfPrintfA_s or to vfPrintfW_s depending on the template parameter. More...
 
template<class CHAR_TYPE >
int fPrintf (::FILE *restrict stream, const CHAR_TYPE *restrict pszFormat,...) noexcept
 Resolves to fPrintfA or to fPrintfW depending on the template parameter. More...
 
template<class CHAR_TYPE >
int fPrintf_s (::FILE *restrict stream, const CHAR_TYPE *restrict pszFormat,...) noexcept
 Resolves to fPrintfA_s or to fPrintfW_s depending on the template parameter. More...
 
template<class CHAR_TYPE >
int vPrintf (const CHAR_TYPE *restrict pszFormat, va_list ap) noexcept
 Resolves to vPrintfA or to vPrintfW depending on the template parameter. More...
 
template<class CHAR_TYPE >
int vPrintf_s (const CHAR_TYPE *restrict pszFormat, va_list ap) noexcept
 Resolves to vPrintfA_s or to vPrintfW_s depending on the template parameter. More...
 
template<class CHAR_TYPE >
int Printf (const CHAR_TYPE *restrict pszFormat,...) noexcept
 Resolves to PrintfA or to PrintfW depending on the template parameter. More...
 
template<class CHAR_TYPE >
int Printf_s (const CHAR_TYPE *restrict pszFormat,...) noexcept
 Resolves to PrintfA_s or to PrintfW_s depending on the template parameter. More...
 
template<class CHAR_TYPE >
int vsPrintf (CHAR_TYPE *restrict pDest, std::size_t cchDest, const CHAR_TYPE *restrict pszFormat, va_list ap) noexcept
 Resolves to vsPrintfA or to vsPrintfW depending on the template parameter. More...
 
template<class CHAR_TYPE >
int sPrintf (CHAR_TYPE *restrict pszDest, std::size_t cchDest, const CHAR_TYPE *restrict pszFormat,...)
 Resolves to sPrintfA or to sPrintfW depending on the template parameter. More...
 
template<class CHAR_TYPE >
int vsnPrintf (CHAR_TYPE *restrict pDest, std::size_t cchDest, const CHAR_TYPE *restrict pszFormat, va_list ap) noexcept
 Resolves to vsnPrintfA or to vsnPrintfW depending on the template parameter. More...
 
template<class CHAR_TYPE >
int snPrintf (CHAR_TYPE *restrict pDest, std::size_t cchDest, const CHAR_TYPE *restrict pszFormat,...) noexcept
 Resolves to snPrintfA or to snPrintfW depending on the template parameter. More...
 
template<class CHAR_TYPE >
int vsnPrintf_s (CHAR_TYPE *restrict pDest, rsize_t cchDest, const CHAR_TYPE *restrict pszFormat, va_list ap) noexcept
 Resolves to vsnPrintfA_s or to vsnPrintfW_s depending on the template parameter. More...
 
template<class CHAR_TYPE >
int snPrintf_s (CHAR_TYPE *restrict pDest, rsize_t cchDest, const CHAR_TYPE *restrict pszFormat,...) noexcept
 Resolves to snPrintfA_s or to snPrintfW_s depending on the template parameter. More...
 
template<class CHAR_TYPE >
int vsPrintf_s (CHAR_TYPE *restrict pDest, rsize_t cchDest, const CHAR_TYPE *restrict pszFormat, va_list ap) noexcept
 Resolves to vsPrintfA_s or to vsPrintfW_s depending on the template parameter. More...
 
template<class CHAR_TYPE >
int sPrintf_s (CHAR_TYPE *restrict pDest, rsize_t cchDest, const CHAR_TYPE *restrict pszFormat,...) noexcept
 Resolves to sPrintfA_s or to sPrintfW_s depending on the template parameter. More...
 
template<class CHAR_TYPE >
int vscPrintf (const CHAR_TYPE *restrict pszFormat, va_list ap) noexcept
 Resolves to vscPrintfA or to vscPrintfW depending on the template parameter. More...
 
template<class CHAR_TYPE >
int scPrintf (const CHAR_TYPE *restrict pszFormat,...) noexcept
 Resolves to scPrintfA or to scPrintfW depending on the template parameter. More...
 
template<class CHAR_TYPE >
int vscPrintf_s (const CHAR_TYPE *restrict pszFormat, va_list ap) noexcept
 Resolves to vscPrintfA_s or to vscPrintfW_s depending on the template parameter. More...
 
template<class CHAR_TYPE >
int scPrintf_s (const CHAR_TYPE *restrict pszFormat,...) noexcept
 Resolves to vscPrintfA_s or to vscPrintfW_s depending on the template parameter. More...
 
std::size_t strLen (const char *pszStr) noexcept
 Returns a size, in bytes, of a zero terminated string excluding the terminating zero. Implements the behaviour of the standard strlen function of the string.h header. More...
 
std::size_t wcsLen (const wchar_t *pszStr) noexcept
 Returns a size, in wide characters, of a zero terminated wide string excluding the terminating zero. Implements the behaviour of the standard wcslen function of the wchar.h header. More...
 
std::size_t strnLen_s (const char *pszStr, std::size_t cchStr) noexcept
 Returns a size, in bytes, of a string excluding the terminating zero, if any. The function implements the strnlen_s function of the ISO/IEC TR 24731-1 standard. More...
 
std::size_t wcsnLen_s (const wchar_t *pszStr, std::size_t cchStr) noexcept
 Returns a size, in wide characters, of a string excluding the terminating zero, if any. The function implements the wcsnlen_s function of the ISO/IEC TR 24731-1 standard. More...
 
char * strCpy (char *restrict pDest, const char *restrict pszSrc) noexcept
 Performs a copying of a zero-terminated string from a source buffer to a destination one. Implements the behaviour of the standard strcpy function of the string.h header. More...
 
wchar_t * wcsCpy (wchar_t *restrict pDest, const wchar_t *restrict pszSrc) noexcept
 Performs a copying of a zero-terminated wide string from a source buffer to a destination one. Implements the behaviour of the standard wcscpy function of the wchar.h header. More...
 
errno_t strCpy_s (char *restrict pDest, rsize_t cchDest, const char *restrict pszSrc) noexcept
 Copies a zero-terminated source string, including a terminating null character, to a destination buffer of the specified size. More...
 
errno_t wcsCpy_s (wchar_t *restrict pDest, rsize_t cchDest, const wchar_t *restrict pszSrc) noexcept
 Copies a zero-terminated source string, including a terminating null character, to a destination buffer of the specified size. More...
 
template<class CHAR_TYPE >
std::size_t tcsLen (const CHAR_TYPE *pszStr) noexcept
 Resolves to strLen, to wcsLen or to ucpsLen depending on the template parameter. More...
 
template<class CHAR_TYPE >
std::size_t tcsnLen_s (const CHAR_TYPE *pszStr, std::size_t cchStr) noexcept
 Resolves to strnLen_s, to wcsnLen_s or to ucpsnLen_s depending on the template parameter. More...
 
template<class CHAR_TYPE >
CHAR_TYPE * tcsCpy (CHAR_TYPE *restrict pszDest, const CHAR_TYPE *restrict pszSrc) noexcept
 Resolves to strCpy, to wcsCpy or to ucpsCpy depending on the template parameter. More...
 
template<class CHAR_TYPE >
errno_t tcsCpy_s (CHAR_TYPE *restrict pszDest, rsize_t cchDest, const CHAR_TYPE *restrict pszSrc) noexcept
 Resolves to strCpy_s, to wcsCpy_s or to ucpsCpy_s depending on the template parameter. More...
 
template<class CHAR_TYPE >
CHAR_TYPE * CstrLiteral (char *pszByteStr, wchar_t *pszWideStr)
 Returns an argument of CHAR_TYPE type. More...
 
template<class CHAR_TYPE >
const CHAR_TYPE * CstrLiteral (const char *pszByteStr, const wchar_t *pszWideStr)
 Returns an argument of const CHAR_TYPE type. More...
 
int GetUniqueStringA (char *lpStr, std::size_t cchStr) noexcept
 Generates an UUID as a C string and writes it into the output buffer. More...
 
int GetUniqueStringW (wchar_t *lpStr, std::size_t cchStr) noexcept
 Generates an UUID as a wide C string and writes it into the output buffer. More...
 
template<class CHAR_TYPE >
bool GetUniqueString (CHAR_TYPE *lpStr, std::size_t cchStr) noexcept
 Generates an UUID as a C string and writes it into the output buffer. More...
 
std::size_t ByteLengthMBS (const char *pszString, std::size_t cchInput) noexcept
 Returns a number of bytes occupied by the cchInput multibyte symbols of a string. More...
 
std::size_t CharacterLengthMBS (const char *pszString, std::size_t cbInput) noexcept
 Returns a number of multibyte symbols that are specified by the cbInput bytes of the pszString encoded as defined by the current locale. More...
 
std::size_t ConvertWideToMBS (char *restrict pStringMB, std::size_t cbStringMB, const wchar_t *restrict pStringW, std::size_t *pcchStringW) noexcept
 Converts a wide string to a multibyte equivalent and returns a number of bytes occupied by the converted multibyte string using the current locale. More...
 
std::size_t ConvertMBSToWide (wchar_t *restrict pStringW, std::size_t cchStringW, const char *restrict pStringMB, std::size_t cbStringMB) noexcept
 Converts a multibyte string to its wide equivalent and returns a number of successfully converted characters using the current locale. More...
 
std::size_t ByteLengthUTF8 (const char *pUtf, std::size_t cchUtf) noexcept
 Returns a number of bytes occupied by the specified number of multibyte symbols of the string specified in the UTF-8 format. More...
 
std::size_t CharacterLengthUTF8 (const char *pszUtf, std::size_t cbUtf) noexcept
 Returns a number of multibyte symbols that are composed from the specified number of bytes of a string encoded in the UTF-8 format. More...
 
std::size_t ConvertUCSToUTF8 (char *restrict pUtf, std::size_t cbUtf, const wchar_t *restrict pUcs, std::size_t *pcchUcs) noexcept
 Converts a wide UCS2/UCS-4 string to its multibyte UTF-8 equivalent and returns a number of bytes occupied by the converted multibyte string independently on the current C locale. More...
 
std::size_t ConvertUTF8ToUCS (wchar_t *restrict pStringW, std::size_t cchStringW, const char *restrict pStringMB, std::size_t cbStringMB) noexcept
 Converts a multibyte UTF-8 string into its wide UCS-2 (or UCS-4) equivalent and returns a number of successfully converted characters independently on the current C locale. More...
 
constexpr ucp_t operator""_ucp (char ch) noexcept
 A unicode code point literal denotion. More...
 
std::size_t ucpsLen (const ucp_t *pszStr) noexcept
 Returns a size, in code points, of a zero terminated string of Unicode code points excluding the terminating zero. Implements the behaviour of the standard strlen function of the string.h header for the type ucp_t. More...
 
std::size_t ucpsnLen_s (const ucp_t *pszStr, std::size_t cchStr) noexcept
 Returns a size, in code points, of a string excluding the terminating zero, if any. The function behaves identically to the strnlen_s function of the ISO/IEC TR 24731-1 standard but is implemented for the type ucp_t. More...
 
ucp_tucpsCpy (ucp_t *restrict pDest, const ucp_t *restrict pszSrc) noexcept
 Performs a copying of a zero-terminated string of Unicode code points from a source buffer to a destination one. Behaves identically to the standard strcpy function but implemented for the type ucp_t. More...
 
errno_t ucpsCpy_s (ucp_t *restrict pDest, rsize_t cchDest, const ucp_t *restrict pszSrc) noexcept
 Copies a zero-terminated source string of Unicode code points, including a terminating null code, to a destination buffer of a specified size. More...
 
int ucpsCmp (const ucp_t *pszStr1, const ucp_t *pszStr2) noexcept
 Lexicographically compares two strings of Unicode code points. More...
 
int ucpsnCmp (const ucp_t *pszStr1, const ucp_t *pszStr2, std::size_t count) noexcept
 Lexicographically compares two strings of Unicode code points with explicitly defined maximum number of characters to read and compare. More...
 
long ucpstol (const ucp_t *restrict str, ucp_t **restrict str_end, int base) noexcept
 Converts a number withing a string to the type "long". More...
 
long long ucpstoll (const ucp_t *restrict str, ucp_t **restrict str_end, int base) noexcept
 Converts a number withing a string to the type "long long". More...
 
unsigned long ucpstoul (const ucp_t *restrict str, ucp_t **restrict str_end, int base) noexcept
 Converts a number withing a string to the type "unsigned long". More...
 
unsigned long long ucpstoull (const ucp_t *restrict str, ucp_t **restrict str_end, int base) noexcept
 Converts a number withing a string to the type "unsigned long long". More...
 
float ucpstof (const ucp_t *restrict str, ucp_t **restrict str_end) noexcept
 Converts a floating point number withing a string to the type "float". More...
 
double ucpstod (const ucp_t *restrict str, ucp_t **restrict str_end) noexcept
 Converts a floating point number withing a string to the type "double". More...
 
long double ucpstold (const ucp_t *restrict str, ucp_t **restrict str_end) noexcept
 Converts a floating point number withing a string to the type "long double". More...
 
int u8len (const char *pUtf, std::size_t cbUtf) noexcept
 Determines a number of bytes contained in a UTF-8 character. More...
 
bool u8check (const char *pUtf8, std::size_t cbUtf8) noexcept
 Verifies validity of a given UTF-8 code according to the Unicode 11.0 standard. More...
 
bool u8check_cp (ucp_t ucp) noexcept
 Verifies that the given Unicode code point is representable in UTF-8 format as specified by the Unicode 11.0 standard. More...
 
int ucptou8 (char *pUtf, ucp_t ucp) noexcept
 Determines the number of bytes needed to represent a Unicode 11.0 code point as a multibyte UTF-8 code and optionally performs the conversion and stores the resulting UTF-8 code in the specified buffer. More...
 
int u8toucp (ucp_t *restrict pUcp, const char *restrict pUtf, std::size_t cbUtf) noexcept
 Inspects at most the given number of bytes of a buffer to determine how many bytes must be read from it in order to successfully perform a conversion of one UTF-8 code to a single Unicode code point and optionally writes the resulting code point into a provided buffer. More...
 
std::size_t u8stoucps (ucp_t *restrict pUcp, const char *restrict pUtf, std::size_t cchChars) noexcept
 Converts a sequence of UTF-8 characters into a sequence of corresponding Unicode 11.0 code points and writes at most the specified number of codes of the resulting sequence to a buffer. More...
 
std::size_t ucpstou8s (char *restrict pUtf, const ucp_t *restrict pUcp, std::size_t cbUtf) noexcept
 Converts a sequence of Unicode 11.0 code points to a sequence of UTF-8 multibyte characters, and writes these characters into a buffer. More...
 
errno_t ucptou8_s (int *restrict pStatus, char *restrict pUtf, rsize_t cbUtf, ucp_t ucp) noexcept
 Securely converts a given Unicode 11.0 code point to its UTF-8 representation. More...
 
errno_t u8toucp_s (int *restrict pStatus, ucp_t *restrict pUcp, const char *restrict pUtf, rsize_t cbUtf) noexcept
 Securely converts one multibyte UTF-8 code to a Unicode 11.0 code point. More...
 
errno_t u8stoucps_s (std::size_t *restrict pcchConverted, ucp_t *restrict pUcp, rsize_t cchUcpMax, const char *restrict pszUtf, rsize_t cchUtf) noexcept
 Converts the specified sequence of UTF-8 characters into a sequence of corresponding unicode code points and, if the specified output buffer is given by a non-NULL pointer, stores at most the specified number of wide characters into the buffer terminating the output string by the zero code. More...
 
errno_t ucpstou8s_s (std::size_t *restrict pcbUtf, char *restrict pUtf, rsize_t cbUtfMax, const ucp_t *restrict pUcp, rsize_t cbMaxConvert) noexcept
 Converts the specified sequence of Unicode 11.0 code points into a sequence of corresponding UTF-8 multibyte characters, and, if the specified output buffer is given by a non-NULL pointer, stores the specified number of bytes, constituting the converted UTF-8 multibyte string, to the output buffer terminating it with a null character. More...
 
int u8towc (wchar_t *restrict pUcs, const char *restrict pUtf, std::size_t cbUtf) noexcept
 Inspects at most the given number of bytes of a buffer to determine how many bytes must be read from it in order to successfully perform a conversion of one UTF-8 code to a single wide character in UCS format and optionally writes the resulting wide character into a provided buffer. More...
 
int wctou8 (char *pUtf, wchar_t chUcs) noexcept
 Determines the number of bytes needed to represent a wide character, expected to be in UCS format, in the UTF-8 format. Optionally, the function stores the representation in a buffer provided by the caller. More...
 
std::size_t u8stowcs (wchar_t *restrict pUcs, const char *restrict pUtf, std::size_t cchChars) noexcept
 Converts the specified sequence of UTF-8 characters into a sequence of corresponding wide characters in the UCS format and writes at most the specified number of wide characters to a buffer. More...
 
std::size_t wcstou8s (char *restrict pUtf, const wchar_t *restrict pUcs, std::size_t cbUtf) noexcept
 Converts a sequence of wide characters, assumed to be in the UCS format, to a sequence of UTF-8 multibyte characters, and writes these characters into a buffer. More...
 
errno_t wctou8_s (int *restrict pStatus, char *restrict pUtf, rsize_t cbUtf, wchar_t chUcs) noexcept
 Securely converts a given wide character, assumed to be encoded in the UCS format, to its UTF-8 representation. More...
 
errno_t u8towc_s (int *restrict pStatus, wchar_t *restrict pUcs, const char *restrict pUtf, rsize_t cbUtf) noexcept
 Securely converts one multibyte UTF-8 code to a wide character assumed to be specified in the UCS format. More...
 
errno_t u8stowcs_s (std::size_t *restrict pcchConverted, wchar_t *restrict pUcs, rsize_t cchUcsMax, const char *restrict pszUtf, rsize_t cchUtf) noexcept
 Converts the specified sequence of UTF-8 characters into a sequence of corresponding UCS-2 (or UCS-4) wide characters and, if the specified output buffer is given by a non-NULL pointer, stores at most the specified number of wide characters into the specified array terminating the output string by a null wide character. More...
 
errno_t wcstou8s_s (std::size_t *restrict pcbUtf, char *restrict pUtf, rsize_t cbUtfMax, const wchar_t *restrict pUcs, rsize_t cbMaxConvert) noexcept
 Converts the specified sequence of UCS-encoded wide characters into a sequence of corresponding UTF-8 multibyte characters, and, if the specified output buffer is given by a non-NULL pointer, stores the specified number of bytes, constituting the converted UTF-8 multibyte string, to the output buffer terminating it with a null character. More...
 
ucp_t ucp_tolower (ucp_t ch) noexcept
 Returns a lowercase form of a given Unicode character. More...
 
ucp_t ucp_toupper (ucp_t ch) noexcept
 Returns an uppercase form of a given Unicode character. More...
 
int ucp_isascii (ucp_t ch) noexcept
 Returns a flag indicating whether the given character belongs to the ANSI ASCII code space. More...
 
int ucp_isblank_ascii (ucp_t ch) noexcept
 Checks whether a given character is a space or a horizontal tab. More...
 
int ucp_isspace_ascii (ucp_t ch) noexcept
 Returns a flag that indicates whether a given character is a whitespace character in the ASCII code space. More...
 
int ucp_iscntrl_ascii (ucp_t ch) noexcept
 Returns a flag that indicates whether a given character is a control character in the ASCII code space. More...
 
int ucp_isalpha_ascii (ucp_t ch) noexcept
 Returns a flag that indicates whether a given character is an alphabetic character in the ASCII code space. More...
 
int ucp_islower_ascii (ucp_t ch) noexcept
 Returns a flag that indicates whether a given character is a lowercase alphabetic character in the ASCII code space. More...
 
int ucp_isupper_ascii (ucp_t ch) noexcept
 Returns a flag that indicates whether a given character is an uppercase alphabetic character in the ASCII code space. More...
 
int ucp_isdigit_ascii (ucp_t ch) noexcept
 Returns a flag that indicates whether a given character is a digit character in the ASCII code space. More...
 
int ucp_isxdigit_ascii (ucp_t ch) noexcept
 Returns a flag that indicates whether a given character is a hexadecimal digit in the ASCII code space. More...
 
int ucp_ispunct_ascii (ucp_t ch) noexcept
 Returns a flag that indicates whether a given character is a punctuational character in the ASCII code space. More...
 
int ucp_isalnum_ascii (ucp_t ch) noexcept
 Returns a flag that indicates whether a given character is an alphanumeric character in the ASCII code space. More...
 
int ucp_isgraph_ascii (ucp_t ch) noexcept
 Returns a flag that indicates whether a given character belongs to the ASCII code space and has a nonempty graphical representation, i.e. any printable character except for whitespace characters. More...
 
int ucp_isprint_ascii (ucp_t ch) noexcept
 Returns a flag that indicates whether a given character is an ASCII code that can be displayed on a graphical output device, i.e. space or any alphanumeric or punctuational character. More...
 
int ucp_isspace (ucp_t ch) noexcept
 Returns a flag that indicates whether a given character is a whitespace character in the Unicode code space. More...
 
int ucp_iscntrl (ucp_t ch) noexcept
 Returns a flag that indicates whether a given character is a control code in the Unicode code space. More...
 
int ucp_isalpha (ucp_t ch) noexcept
 Returns a flag that indicates whether a given character is an alphabetic character in the Unicode code space. More...
 
int ucp_islower (ucp_t ch) noexcept
 Returns a flag that indicates whether a given character is a lowercase alphabetic character in the Unicode code space. More...
 
int ucp_isupper (ucp_t ch) noexcept
 Returns a flag that indicates whether a given character is an uppercase alphabetic character in the Unicode code space. More...
 
int ucp_isdigit (ucp_t ch) noexcept
 Returns a flag that indicates whether a given character is a digit character in the Unicode code space. More...
 
int ucp_ispunct (ucp_t ch) noexcept
 Returns a flag that indicates whether a given character is a punctuation character in the Unicode code space. More...
 
int ucp_isalnum (ucp_t ch) noexcept
 Returns a flag that indicates whether a given character is an alphanumeric character in the Unicode code space. More...
 
int ucp_isgraph (ucp_t ch) noexcept
 Returns a flag that indicates whether a given Unicode character has a nonempty graphical representation, i.e. any printable character except for whitespace characters. More...
 
int ucp_isprint (ucp_t ch) noexcept
 Returns a flag that indicates whether a given Unicode character can be displayed on an output device. More...
 
ci_string operator""_cis (const char *str, std::size_t count)
 Returns a case-independent string constructed from a C-string literal. More...
 
constexpr ci_string_view operator""_cisv (const char *str, std::size_t count)
 Returns a case-independent string view object constructed from a C-string literal. More...
 
template<class T >
from_string (const char *pszValue)
 A set of templates providing an interface to convert an argument specifying a C or C++ string to a value of a specified type. . More...
 
template<class T >
from_string (const wchar_t *pszValue)
 A set of templates providing an interface to convert an argument specifying a C or C++ string to a value of a specified type. . More...
 
template<class T >
from_string (const char *pszValue, int base=10)
 A set of templates providing an interface to convert an argument specifying a C or C++ string to a value of a specified type. This template is available (i.e. participates in overload resolution) when the type is integral. . More...
 
template<class T >
from_string (const wchar_t *pszValue, int base=10)
 A set of templates providing an interface to convert an argument specifying a C or C++ string to a value of a specified type. This template is available (i.e. participates in overload resolution) when the type is integral. . More...
 
constexpr bool u8_check (const char *pStr, std::size_t cbStr) noexcept
 Verifies the validity of a UTF-8 code and its byte size. More...
 
constexpr bool ucp_check (ucp_t ucp) noexcept
 Verifies the validity of a Unicode 11.0 code point. More...
 
template<bool throw_on_failure = true, class InputIteratorBegin , class InputIteratorEnd >
constexpr u8_ch_data read_u8_char_data (InputIteratorBegin begin, InputIteratorEnd end)
 Reads a UTF-8 character addressed by a pair of input iterators and returns a u8_ch_data object with information about it. . More...
 
template<bool throw_on_failure = true, class InputIterator >
CONSTEXPR_CPP14 u8_ch_data read_u8_char_data (InputIterator itSymbol, std::size_t cbSymbol=UTF8_MAX_LEN)
 Reads a UTF-8 character addressed by an input iterator and returns a u8_ch_data object with information about it. . More...
 
template<bool throw_on_failure = true, std::size_t N>
constexpr u8_ch_data read_u8_char_data (const char(&pSymbol)[N]) noexcept(!throw_on_failure)
 Reads a UTF-8 character specified by an array of byte characters and constructs a u8_ch_data object with information about it. More...
 
template<bool throw_on_failure = true, class InputIteratorBegin , class InputIteratorEnd >
constexpr std::pair< u8_ch_data, InputIterator > read_u8_char_data_and_advance (InputIteratorBegin begin, InputIteratorEnd end)
 Reads a UTF-8 character addressed by a pair of input iterators, advances the first one and returns a pair of a u8_ch_data object with information about the character together with the copy of the iterator advances as a result of the reading. . More...
 
template<bool throw_on_failure = true, class InputIterator >
constexpr std::pair< u8_ch_data, InputIterator > read_u8_char_data_and_advance (InputIterator itSymbol, std::size_t cbSymbol=UTF8_MAX_LEN)
 Reads a UTF-8 character addressed by an input iterator, advances it and returns a pair of a u8_ch_data object with information about the character together with the copy of the iterator after the reading. . More...
 
template<bool do_full_checks = true, bool throw_on_failure = true, class InputIterator >
constexpr std::size_t u8blen (InputIterator itSymbol, std::size_t cbSymbol=UTF8_MAX_LEN) noexcept(!throw_on_failure)
 Returns a byte length of a UTF-8 character addressed by an iterator. More...
 
template<bool do_full_checks = true, bool throw_on_failure = true, std::size_t N>
constexpr std::size_t u8blen (const char(&pSymbol)[N]) noexcept(!throw_on_failure)
 Returns a byte size of a UTF-8 character in the specified array of bytes. More...
 
template<bool do_full_checks = true, bool throw_on_failure = true>
constexpr std::size_t u8blen (ucp_t ucp) noexcept(!throw_on_failure)
 Returns the byte size of a UTF-8 representation of a given Unicode code point. More...
 
template<bool do_full_checks = true, bool throw_on_failure = true, class InputIterator >
constexpr ucp_t u8_to_ucp (InputIterator itSymbol, std::size_t cbSymbol=UTF8_MAX_LEN) noexcept(!throw_on_failure)
 Converts a UTF-8 code referenced by an iterator to a Unicode 11.0 code point. More...
 
template<bool do_full_checks = true, bool throw_on_failure = true, std::size_t N>
constexpr ucp_t u8_to_ucp (const char(&pSymbol)[N]) noexcept(!throw_on_failure)
 Converts a UTF-8 code read from an array of bytes to a Unicode 11.0 code point. More...
 
template<bool do_full_checks = true, bool throw_on_failure = true, class InputIterator >
constexpr std::pair< ucp_t, InputIterator > u8_to_ucp_advance (InputIterator itSymbol, std::size_t cbSymbol=UTF8_MAX_LEN) noexcept(!throw_on_failure)
 Converts a UTF-8 code referenced by an iterator to a Unicode 11.0 code point and returns it together with a copy of the iterator in the state immediately following the acquisition of the UTF-8 code. More...
 
template<bool do_full_checks = true, bool throw_on_failure = true, class OutputIterator >
constexpr OutputIterator ucp_to_u8 (OutputIterator it, ucp_t ucp) noexcept(!throw_on_failure)
 Converts a given Unicode 11.0 code point to a sequence of bytes representing the corresponding UTF-8 multi-byte character and writes the bytes to a given output iterator. More...
 
template<class CharTraits = std::char_traits<ucp_t>, class Allocator = std::allocator<ucp_t>, class InputIterator >
std::basic_string< ucp_t, CharTraits, Allocator > u8_decode_string (InputIterator it, std::size_t cbAvail)
 Produces a C++ string of Unicode 11.0 code points from bytes of UTF-8 encoded characters. More...
 
template<class CharTraits = std::char_traits<ucp_t>, class Allocator = std::allocator<ucp_t>, class CPtr >
std::basic_string< ucp_t, CharTraits, Allocator > u8_decode_string (CPtr &&pszUtf8)
 Produces a C++ string of Unicode 11.0 code points from bytes of a UTF-8 encoded zero-terminated string. More...
 
template<class CharTraits = std::char_traits<ucp_t>, class Allocator = std::allocator<ucp_t>, std::size_t N>
std::basic_string< ucp_t, CharTraits, Allocator > u8_decode_string (const char(&pUtf8)[N])
 Produces a C++ string of Unicode 11.0 code points from an array of bytes encoding a UTF-8 string. . More...
 
template<class CharTraitsTo = std::char_traits<ucp_t>, class AllocatorTo = std::allocator<ucp_t>, class Container >
std::basic_string< ucp_t, CharTraitsTo, AllocatorTo > u8_decode_string (const Container &str)
 Produces a C++ string of Unicode 11.0 code points from bytes of a C++ container with a UTF-8 encoded string. . More...
 
template<class CharTraitsTo , class AllocatorTo , class BasicStringType >
std::basic_string< ucp_t, CharTraitsTo, AllocatorTo > u8_decode_string (const BasicStringType &str)
 Produces a C++ string of Unicode 11.0 code points from a C++ UTF-8 encoded string with custom char-traits and allocator classes. . More...
 
template<class CharTraitsTo , class BasicStringType >
std::basic_string< ucp_t, CharTraitsTo, ReboundAllocator > u8_decode_string (const BasicStringType &str)
 Produces a C++ string of Unicode 11.0 code points from a C++ UTF-8 encoded string with a custom char-traits class. . More...
 
template<class AllocatorTo , class BasicStringType >
std::basic_string< ucp_t, ReboundCharTraits, AllocatorTo > u8_decode_string (const BasicStringType &str)
 Produces a C++ string of Unicode 11.0 code points from a C++ UTF-8 encoded string with a custom type of allocator. . More...
 
template<class BasicStringType >
std::basic_string< ucp_t, ReboundCharTraits, ReboundAllocator > u8_decode_string (const BasicStringType &str)
 Produces a C++ string of Unicode 11.0 code points from a C++ UTF-8 encoded string. . More...
 
template<class CharTraits = std::char_traits<char>, class Allocator = std::allocator<char>, class InputIterator >
std::basic_string< char, CharTraits, Allocator > u8_encode_string (InputIterator it, std::size_t count)
 Converts a given string of Unicode code points to its UTF-8 representation and returns the latter as a C++ string object. More...
 
template<class CharTraits = std::char_traits<char>, class Allocator = std::allocator<char>, class CPtr >
std::basic_string< char, CharTraits, Allocator > u8_encode_string (CPtr &&pszUcp)
 Converts a given zero-terminated string of Unicode code points to its UTF-8 representation and returns the latter as a C++ string object. More...
 
template<class CharTraits = std::char_traits<char>, class Allocator = std::allocator<char>, std::size_t N>
std::basic_string< char, CharTraits, Allocator > u8_encode_string (const ucp_t(&pUcp)[N])
 Converts a given array with a string of Unicode code points to the corresponding UTF-8 representation and returns the latter as a C++ string object. . More...
 
template<class CharTraitsTo = std::char_traits<char>, class AllocatorTo = std::allocator<char>, class Container >
std::basic_string< char, CharTraitsTo, AllocatorTo > u8_encode_string (const Container &str)
 Converts a given container with a sequence of Unicode code points to the corresponding UTF-8 representation and returns the latter as a C++ string object. . More...
 
template<class CharTraitsTo , class AllocatorTo , class BasicStringType >
std::basic_string< char, CharTraitsTo, AllocatorTo > u8_encode_string (const BasicStringType &str)
 Converts a given C++ string of Unicode code points to the corresponding UTF-8 representation as another C++ string object with custom char-traits policy and an allocator. . More...
 
template<class CharTraitsTo , class BasicStringType >
std::basic_string< char, CharTraitsTo, ReboundAllocator > u8_encode_string (const BasicStringType &str)
 Converts a given C++ string of Unicode code points to the corresponding UTF-8 representation as another C++ string object with a custom char-traits policy. . More...
 
template<class AllocatorTo , class BasicStringType >
std::basic_string< char, ReboundCharTraits, AllocatorTo > u8_encode_string (const BasicStringType &str)
 Converts a given C++ string of Unicode code points to the corresponding UTF-8 representation as another C++ string object with a custom allocator. . More...
 
template<class BasicStringType >
std::basic_string< char, ReboundCharTraits, ReboundAllocator > u8_encode_string (const BasicStringType &str)
 Converts a given C++ string of Unicode code points to the corresponding UTF-8 representation. . More...
 
ucp_string to_ucp_string (int value)
 Converts the specified numerical value to a Unicode string of the ucp_string type. More...
 
ucp_string to_ucp_string (long value)
 Converts the specified numerical value to a Unicode string of the ucp_string type. More...
 
ucp_string to_ucp_string (long long value)
 Converts the specified numerical value to a Unicode string of the ucp_string type. More...
 
ucp_string to_ucp_string (unsigned value)
 Converts the specified numerical value to a Unicode string of the ucp_string type. More...
 
ucp_string to_ucp_string (unsigned long value)
 Converts the specified numerical value to a Unicode string of the ucp_string type. More...
 
ucp_string to_ucp_string (unsigned long long value)
 Converts the specified numerical value to a Unicode string of the ucp_string type. More...
 
ucp_string to_ucp_string (double value)
 Converts the specified numerical value to a Unicode string of the ucp_string type. More...
 
ucp_string to_ucp_string (long double value)
 Converts the specified numerical value to a Unicode string of the ucp_string type. More...
 
ucp_string to_ucp_string (float value)
 Converts the specified numerical value to a Unicode string of the ucp_string type. More...
 
int stoi (const ucp_string &str, std::size_t *restrict pos=nullptr, int base=10)
 Converts a UCP string to int. More...
 
long stol (const ucp_string &str, std::size_t *restrict pos=nullptr, int base=10)
 Converts a UCP string to long. More...
 
long long stoll (const ucp_string &str, std::size_t *restrict pos=nullptr, int base=10)
 Converts a UCP string to long long. More...
 
unsigned long stoul (const ucp_string &str, std::size_t *restrict pos=nullptr, int base=10)
 Converts a UCP string to unsigned long. More...
 
unsigned long long stoull (const ucp_string &str, std::size_t *restrict pos=nullptr, int base=10)
 Converts a UCP string to unsigned long long. More...
 
template<class T >
from_string (const ucp_t *pszValue)
 A set of templates providing an interface to convert an argument specifying a C or C++ string to a value of a specified type. More...
 
template<class T >
from_string (const ucp_t *pszValue, int base=10)
 A set of templates providing an interface to convert an argument specifying a C or C++ string to a value of a specified type. This template is available (i.e. participates in overload resolution) when the type is integral. More...
 
template<class T , class CharT , class TraitsT , class AllocT >
from_string (const std::basic_string< CharT, TraitsT, AllocT > &strValue)
 A set of templates providing an interface to convert an argument specifying a C or C++ string to a value of a specified type. . More...
 
template<class T , class CharT , class TraitsT , class AllocT >
from_string (std::basic_string< CharT, TraitsT, AllocT > &&strValue)
 A set of templates providing an interface to convert an argument specifying a C or C++ string to a value of a specified type. . More...
 
template<class T , class CharT , class TraitsT , class AllocT >
from_string (const std::basic_string< CharT, TraitsT, AllocT > &strValue, int base=10)
 A set of templates providing an interface to convert an argument specifying a C or C++ string to a value of a specified type. This template is available (i.e. participates in overload resolution) when the type is integral. . More...
 

from_chars

A set of overloads and ancilliary components which implement C++17 std::from_chars using C++14 means.

enum class  chars_format { scientific = 1 , fixed = 2 , general , hex }
 An enumeration used to specify fromatting of the from_chars floating-point conversion function. More...
 
template<class CharType , class IntegralType >
from_chars_result< CharType > from_chars (const CharType *first, const CharType *last, IntegralType &value, int base=10) noexcept
 Converts a string representation of an integral value to the specified integral representation. More...
 
template<class CharType , class FloatingPointType >
from_chars_result< CharType > from_chars (const CharType *first, const CharType *last, FloatingPointType &value, chars_format fmt=chars_format::general) noexcept
 Converts a string representation of a floating-point value to the specified numeric representation. . More...
 

Allocating functions

typedef char *(* PFNGET_TAG_DESCRIPTION_PROCA) (const char *lpszTag, std::uintptr_t nUserParam, int nCallCounter)
 A type of a pointer to a callback function used by the allocation functions initializing strings by formats specified using sets of tags. The function is used as an associator between a tag and the appropriate output value. More...
 
typedef wchar_t *(* PFNGET_TAG_DESCRIPTION_PROCW) (const wchar_t *lpszTag, std::uintptr_t nUserParam, int nCallCounter)
 A type of a pointer to a callback function used by the allocation functions initializing strings by formats specified using sets of tags. The function is used as an associator between a tag and the appropriate output value. More...
 
template<class CHAR_TYPE >
using PFNGET_TAG_DESCRIPTION_PROC = CHAR_TYPE *(*)(const CHAR_TYPE *, std::uintptr_t, int)
 A template definition for a user-defined callback functions used for tag-based formatting. See TAG_DESCRIPTION_PARAM, AllocateAndFormatStringByTags.
 
typedef TAG_DESCRIPTION_PARAM< char > TAG_DESCRIPTION_PARAM_A
 A structure defining a set of parameters for the AllocateAndFormatStringByTagsIndirectA function to specify format of the output string with a given set of tags. See the definition of the TAG_DESCRIPTION_PARAM structure template.
 
typedef TAG_DESCRIPTION_PARAM< wchar_t > TAG_DESCRIPTION_PARAM_W
 A structure defining a set of parameters for the AllocateAndFormatStringByTagsIndirectW function to specify format of the output string with a given set of tags. See the definition of the TAG_DESCRIPTION_PARAM structure template.
 
char * AllocateAndFormatStringA (const char *restrict lpszFormat,...) noexcept
 Allocates a string buffer and initializes it according to the specified format parameters. More...
 
wchar_t * AllocateAndFormatStringW (const wchar_t *restrict lpszFormat,...) noexcept
 Allocates a string buffer and initializes it according to the specified format parameters. More...
 
char * AllocateAndFormatStringVA (va_list ap, const char *restrict lpszFormat) noexcept
 Allocates a string buffer and initializes it according to the specified format string and the argument list. More...
 
wchar_t * AllocateAndFormatStringVW (va_list ap, const wchar_t *restrict lpszFormat) noexcept
 Allocates a string buffer and initializes it according to the specified format string and the argument list. More...
 
char * AllocateAndFormatStringByTagsIndirectA (const char *restrict lpszTagFormat, unsigned int cNumberOfTagsPresent, const TAG_DESCRIPTION_PARAM_A *restrict pTagsParams)
 Allocates and initializes a string formatted by user-defined tags. More...
 
wchar_t * AllocateAndFormatStringByTagsIndirectW (const wchar_t *restrict lpszTagFormat, unsigned int cNumberOfTagsPresent, const TAG_DESCRIPTION_PARAM_W *restrict pTagsParams)
 Allocates and initializes a wide string formatted by user-defined tags. More...
 
char * AllocateAndFormatStringByTagsVA (va_list ap, const char *restrict lpszTagFormatString, unsigned int cNumberOfTagsPresent)
 Allocates and initializes a string defined by format specified using PrintfA_s control sequences and user-defined tags. More...
 
wchar_t * AllocateAndFormatStringByTagsVW (va_list ap, const wchar_t *restrict lpszTagFormatString, unsigned int cNumberOfTagsPresent)
 Allocates and initializes a string defined by format specified using PrintfW_s control sequences and user-defined tags. More...
 
char * AllocateAndFormatStringByTagsA (const char *restrict lpszTagFormatString, unsigned int cNumberOfTagsPresent,...)
 Allocates and initializes a multibyte string defined by format specified using PrintfA_s control sequences and user-defined tags. More...
 
wchar_t * AllocateAndFormatStringByTagsW (const wchar_t *restrict lpszTagFormatString, unsigned int cNumberOfTagsPresent,...)
 Allocates and initializes a wide string defined by format specified using PrintfW_s control sequences and user-defined tags. More...
 
template<class CHAR_TYPE >
CHAR_TYPE * AllocateAndFormatString (const CHAR_TYPE *restrict lpszFormat,...) noexcept
 Allocates a string buffer and initializes it according to the specified format parameters. More...
 
template<class CHAR_TYPE >
CHAR_TYPE * AllocateAndFormatStringV (va_list ap, const CHAR_TYPE *restrict lpszFormat) noexcept
 Allocates a string buffer and initializes it according to the specified format string and the argument list. More...
 
template<class CHAR_TYPE >
CHAR_TYPE * AllocateAndFormatStringByTagsIndirect (const CHAR_TYPE *restrict lpszTagFormat, unsigned int cNumberOfTagsPresent, const TAG_DESCRIPTION_PARAM< CHAR_TYPE > *restrict pTagsParams)
 Allocates and initializes a string formatted by user-defined tags. More...
 
template<class CHAR_TYPE >
CHAR_TYPE * AllocateAndFormatStringByTagsV (va_list ap, const CHAR_TYPE *restrict lpszTagFormatString, unsigned int cNumberOfTagsPresent)
 Allocates and initializes a string defined by format specified using PrintfA_s or PrintfW_s control sequences and user-defined tags. More...
 
template<class CHAR_TYPE >
CHAR_TYPE * AllocateAndFormatStringByTags (const CHAR_TYPE *restrict lpszTagFormatString, unsigned int cNumberOfTagsPresent,...)
 Allocates and initializes a multibyte string defined by format specified using PrintfA_s control sequences and user-defined tags. More...
 

Memory allocation functions

Portable allocation functions

typedef AutoCString< char > AutoCStringA
 An alias for the Chusov::String::AutoCString template instantiated for multibyte strings.
 
typedef AutoCString< wchar_t > AutoCStringW
 An alias for the Chusov::String::AutoCString template instantiated for wide strings.
 
char * AllocateStringA (std::size_t cch) noexcept
 Allocates an uninitialized string of the specified size, in bytes, plus a room for a terminating zero. More...
 
wchar_t * AllocateStringW (std::size_t cch) noexcept
 Allocates an uninitialized string of the specified size, in wide symbols, plus a room for the terminating zero. More...
 
void FreeStringA (char *lpszString) noexcept
 The function frees memory occupied by the string buffer the parameter points to. The memory must be allocated by one of the Chusov::Memory or Chusov::String allocation functions. More...
 
void FreeStringW (wchar_t *lpszString) noexcept
 The function frees memory occupied by the string buffer the parameter points to. The memory must be allocated by one of the Chusov::Memory or Chusov::String allocation functions. More...
 
char * AllocateAndCopyStringA (const char *pszRight) noexcept
 Allocates and returns a copy of a string. More...
 
wchar_t * AllocateAndCopyStringW (const wchar_t *pszRight) noexcept
 Allocates and returns a copy of a wide string. More...
 
wchar_t * AllocateWideFromMBS (const char *pszRight, std::size_t cbRight) noexcept
 Allocates and returns a wide copy of a multibyte string. More...
 
char * AllocateMBSFromWide (const wchar_t *pszRight, std::size_t cchRight) noexcept
 Allocates and returns a multibyte version of a wide string. More...
 
wchar_t * AllocateUCSFromUTF8 (const char *pszRight, std::size_t cbRight) noexcept
 Allocates and returns a wide UCS-2 (UCS-4) copy of a multibyte UTF-8 string. More...
 
char * AllocateUTF8FromUCS (const wchar_t *pszRight, std::size_t cchRight) noexcept
 Allocates and returns a multibyte UTF-8 version of a wide string given in the UCS-2 (UCS-4) format. More...
 
char * AllocateUniqueStringA () noexcept
 Allocates and returns a unique string which is a representation of an UUID generated internally. More...
 
wchar_t * AllocateUniqueStringW () noexcept
 Allocates and returns a unique string which is a representation of an UUID generated internally. More...
 
char * AllocateTempPathA () noexcept
 Allocates and returns an absolute path for a directory used for storing temporary files. More...
 
wchar_t * AllocateTempPathW () noexcept
 Allocates and returns an absolute path for a directory used for storing temporary files. More...
 
char * AllocateUniqueTempFileNameA (const char *lpszExtension) noexcept
 Allocates and returns an absolute a unique file name based on UUID and that is to be located in the system temporary directory. More...
 
wchar_t * AllocateUniqueTempFileNameW (const wchar_t *lpszExtension) noexcept
 Allocates and returns an absolute a unique file name based on UUID and that is to be located in the system temporary directory. More...
 
void SecureFreeStringA (volatile char *pszString) noexcept
 Performs secure deallocation of a string buffer randomizing its contents. It is designed to be a more secure version of FreeStringA. More...
 
void SecureFreeStringW (volatile wchar_t *pszString) noexcept
 Performs secure deallocation of a string buffer randomizing its contents. It is designed to be a more secure version of FreeStringW. More...
 
template<class CHAR_TYPE >
CHAR_TYPE * AllocateString (std::size_t cch) noexcept
 Allocates an uninitialized string of the specified size plus a room for the terminating zero. More...
 
template<class CHAR_TYPE >
void FreeString (CHAR_TYPE *lpszString) noexcept
 The function frees memory occupied by the string buffer the parameter points to. The memory must be allocated by one of the Chusov::Memory or Chusov::String allocation functions. More...
 
template<class RETURN_CHAR_TYPE , class SOURCE_CHAR_TYPE >
RETURN_CHAR_TYPE * AllocateAndCopyString (const SOURCE_CHAR_TYPE *pszRight) noexcept
 Allocates and returns a copy of a string. More...
 
template<class CHAR_TYPE >
CHAR_TYPE * AllocateUniqueString () noexcept
 Allocates and returns a unique string which is a representation of an UUID generated internally. More...
 
template<class CHAR_TYPE >
CHAR_TYPE * AllocateTempPath () noexcept
 Allocates and returns an absolute path for a directory used for storing temporary files. More...
 
template<class CHAR_TYPE >
CHAR_TYPE * AllocateUniqueTempFileName (const CHAR_TYPE *lpszExtension) noexcept
 Allocates and returns an absolute a unique file name based on UUID and that is to be located in the system temporary directory. More...
 
template<class CHAR_TYPE >
void SecureFreeString (volatile CHAR_TYPE *pszString) noexcept
 Performs secure deallocation of a string buffer randomizing its contents. It is designed to be a more secure version of FreeString. More...
 

Detailed Description

A namespace of string manipulation functions and classes.