6#define __XTD_CORE_INTERNAL__ 
    7#include "internal/__generic_stream_output.h" 
    8#include "internal/__format_information.h" 
    9#include "internal/__format_stringer.h" 
   10#include "internal/__sprintf.h" 
   11#undef __XTD_CORE_INTERNAL__ 
   30template<
typename ...args_t>
 
   31void __ustring_extract_format_arg(
xtd::ustring& fmt, std::vector<__format_information<char>>& format, args_t&&... args);
 
   32void __throw_ustring_format_exception();
 
   33void __throw_ustring_format_exception_close_bracket();
 
   34void __throw_ustring_format_exception_open_bracket();
 
   35void __throw_ustring_format_exception_start_colon();
 
   54    explicit 
ustring(const allocator_type& allocator) noexcept;
 
   60    ustring(
size_t count, value_type character);
 
   66    ustring(
size_t count, value_type character, const allocator_type& allocator);
 
   77    ustring(
size_t count, 
char8_t character, const allocator_type& allocator);
 
   82    ustring(
size_t count, 
char16_t character);
 
   88    ustring(
size_t count, 
char16_t character, const allocator_type& allocator);
 
   93    ustring(
size_t count, 
char32_t character);
 
   99    ustring(
size_t count, 
char32_t character, const allocator_type& allocator);
 
  110    ustring(
size_t count, 
wchar_t character, const allocator_type& allocator);
 
  122    ustring(const 
ustring& str, 
size_t index, 
size_t count, const allocator_type& allocator);
 
  140    ustring(const value_type* str, 
size_t count, const allocator_type& allocator);
 
  147    ustring(const value_type* str, const allocator_type& allocator);
 
  154    ustring(value_type* str, const allocator_type& allocator);
 
  170    ustring(const std::
string& str, const allocator_type& allocator) noexcept;
 
  178    ustring(const std::u8string& str, const allocator_type& allocator) noexcept;
 
  185    ustring(const 
char8_t* str, const allocator_type& allocator);
 
  192    ustring(
char8_t* str, const allocator_type& allocator);
 
  200    ustring(const std::u16string& str, const allocator_type& allocator) noexcept;
 
  207    ustring(const 
char16_t* str, const allocator_type& allocator);
 
  214    ustring(
char16_t* str, const allocator_type& allocator);
 
  222    ustring(const std::u32string& str, const allocator_type& allocator) noexcept;
 
  229    ustring(const 
char32_t* str, const allocator_type& allocator);
 
  236    ustring(
char32_t* str, const allocator_type& allocator);
 
  244    ustring(const std::wstring& str, const allocator_type& allocator) noexcept;
 
  251    ustring(const 
wchar_t* str, const allocator_type& allocator);
 
  258    ustring(
wchar_t* str, const allocator_type& allocator);
 
  271    template<typename input_iterator_t>
 
  272    ustring(input_iterator_t first, input_iterator_t last) : std::basic_string<value_type>(first, last) {}
 
  277    template<
typename input_iterator_t>
 
  278    ustring(input_iterator_t first, input_iterator_t last, 
const allocator_type& allocator) : std::basic_string<value_type>(first, last, allocator) {}
 
  282    ustring(std::initializer_list<value_type> il);
 
  286    ustring(std::initializer_list<value_type> il, 
const allocator_type& allocator);
 
  294    ustring(std::initializer_list<char8_t> il, 
const allocator_type& allocator);
 
  302    ustring(std::initializer_list<char16_t> il, 
const allocator_type& allocator);
 
  310    ustring(std::initializer_list<char32_t> il, 
const allocator_type& allocator);
 
  318    ustring(std::initializer_list<wchar_t> il, 
const allocator_type& allocator);
 
  337    ustring& operator=(
const std::string& str);
 
  338    ustring& operator=(
const value_type* str);
 
  339    ustring& operator=(
const std::u8string& str);
 
  340    ustring& operator=(
const char8_t* str);
 
  341    ustring& operator=(
const std::u16string& str);
 
  342    ustring& operator=(
const char16_t* str);
 
  343    ustring& operator=(
const std::u32string& str);
 
  344    ustring& operator=(
const char32_t* str);
 
  345    ustring& operator=(
const std::wstring& str);
 
  346    ustring& operator=(
const wchar_t* str);
 
  349    ustring& operator=(value_type character);
 
  350    ustring& operator=(
char8_t character);
 
  351    ustring& operator=(
char16_t character);
 
  352    ustring& operator=(
char32_t character);
 
  353    ustring& operator=(
wchar_t character);
 
  354    ustring& operator=(
const std::initializer_list<value_type>& il);
 
  355    ustring& operator=(
const std::initializer_list<char8_t>& il);
 
  356    ustring& operator=(
const std::initializer_list<char16_t>& il);
 
  357    ustring& operator=(
const std::initializer_list<char32_t>& il);
 
  358    ustring& operator=(
const std::initializer_list<wchar_t>& il);
 
  362    template<
typename type_t>
 
  363    ustring operator+(
const type_t& 
object)
 const {
 
  365      result.append(
object);
 
  370    ustring& operator+=(
const std::string& str);
 
  371    ustring& operator+=(
const value_type* str);
 
  372    ustring& operator+=(
const std::u8string& str);
 
  373    ustring& operator+=(
const char8_t* str);
 
  374    ustring& operator+=(
const std::u16string& str);
 
  375    ustring& operator+=(
const char16_t* str);
 
  376    ustring& operator+=(
const std::u32string& str);
 
  377    ustring& operator+=(
const char32_t* str);
 
  378    ustring& operator+=(
const std::wstring& str);
 
  379    ustring& operator+=(
const wchar_t* str);
 
  380    ustring& operator+=(value_type character);
 
  381    ustring& operator+=(
char8_t character);
 
  382    ustring& operator+=(
char16_t character);
 
  383    ustring& operator+=(
char32_t character);
 
  384    ustring& operator+=(
wchar_t character);
 
  385    ustring& operator+=(
const std::initializer_list<value_type>& il);
 
  386    ustring& operator+=(
const std::initializer_list<char8_t>& il);
 
  387    ustring& operator+=(
const std::initializer_list<char16_t>& il);
 
  388    ustring& operator+=(
const std::initializer_list<char32_t>& il);
 
  389    ustring& operator+=(
const std::initializer_list<wchar_t>& il);
 
  390    template<
typename type_t>
 
  391    ustring& operator+=(
const type_t& 
object) {
 
  392      *
this = *
this + 
ustring(
object);
 
  396    bool operator==(
const ustring& other) 
const;
 
  397    bool operator!=(
const ustring& other) 
const;
 
  398    bool operator==(
const std::string other) 
const;
 
  399    bool operator!=(
const std::string other) 
const;
 
  400    bool operator==(
const value_type* other) 
const;
 
  401    bool operator!=(
const value_type* other) 
const;
 
  402    bool operator==(
const std::u8string other) 
const;
 
  403    bool operator!=(
const std::u8string other) 
const;
 
  404    bool operator==(
const char8_t* other) 
const;
 
  405    bool operator!=(
const char8_t* other) 
const;
 
  406    bool operator==(
const std::u16string other) 
const;
 
  407    bool operator!=(
const std::u16string other) 
const;
 
  408    bool operator==(
const char16_t* other) 
const;
 
  409    bool operator!=(
const char16_t* other) 
const;
 
  410    bool operator==(
const std::u32string other) 
const;
 
  411    bool operator!=(
const std::u32string other) 
const;
 
  412    bool operator==(
const char32_t* other) 
const;
 
  413    bool operator!=(
const char32_t* other) 
const;
 
  414    bool operator==(
const std::wstring other) 
const;
 
  415    bool operator!=(
const std::wstring other) 
const;
 
  416    bool operator==(
const wchar_t* other) 
const;
 
  417    bool operator!=(
const wchar_t* other) 
const;
 
  418    const value_type& operator[](
size_t index);
 
  419    const value_type& operator[](
size_t index) 
const;
 
  420    ustring substr(size_type index = 0, size_type count = npos) 
const;    
 
  426    template<
typename object_t>
 
  432    template<
typename object_t>
 
  443    template<
typename object_t>
 
  449    template<
typename object_t>
 
  457    using std::basic_string<value_type>
::compare;
 
  503    static int compare(
const ustring& str_a, 
size_t index_a, 
const ustring& str_b, 
size_t index_b, 
size_t length) 
noexcept;
 
  517    static int compare(
const ustring& str_a, 
size_t index_a, 
const ustring& str_b, 
size_t index_b, 
size_t length, 
bool ignore_case) 
noexcept;
 
  547    template<
typename object_a_t, 
typename object_b_t, 
typename object_c_t, 
typename object_d_t>
 
  548    static ustring concat(object_a_t obj_a, object_b_t obj_b, object_c_t obj_c, object_d_t obj_d) 
noexcept {
 
  549      return format(
"{}{}{}{}", obj_a, obj_b, obj_c, obj_d);
 
  564    template<
typename object_a_t, 
typename object_b_t, 
typename object_c_t>
 
  565    static ustring concat(object_a_t obj_a, object_b_t obj_b, object_c_t obj_c) 
noexcept {
 
  566      return format(
"{}{}{}", obj_a, obj_b, obj_c);
 
  579    template<
typename object_a_t, 
typename object_b_t>
 
  581      return format(
"{}{}", obj_a, obj_b);
 
  590    static ustring concat(
const std::vector<const value_type*>& values) 
noexcept;
 
  591    static ustring concat(
const std::vector<const char8_t*>& values) 
noexcept;
 
  592    static ustring concat(
const std::initializer_list<ustring>& values) 
noexcept;
 
  593    static ustring concat(
const std::initializer_list<const value_type*>& values) 
noexcept;
 
  594    static ustring concat(
const std::initializer_list<const char8_t*>& values) 
noexcept;
 
  600    template<
typename object_t>
 
  603      for (
const auto& arg : args)
 
  604        result += 
format(
"{}", arg);
 
  609    template<
typename object_t>
 
  610    static ustring concat(
const std::initializer_list<object_t>& args) 
noexcept {
 
  612      for (
const auto& arg : args)
 
  613        result += 
format(
"{}", arg);
 
  621    template<
typename value_t>
 
  623      return format(
"{}", value);
 
  631      for (
auto& item : {
"enum ", 
"class ", 
"union ", 
"struct "})
 
  632        result = result.
replace(item, 
"");
 
  635      class auto_delete_char_pointer {
 
  637        auto_delete_char_pointer(
char* value) : value_(value) {}
 
  638        ~auto_delete_char_pointer() {free(value_);}
 
  639        char* operator()()
 const {
return value_;}
 
  644      return auto_delete_char_pointer(abi::__cxa_demangle(name.c_str(), 0, 0, &status))();
 
  688    template<typename ...args_t>
 
  692      std::vector<__format_information<char>> formats;
 
  693      typename ustring::const_iterator begin_format_iterator =  fmt.cend();
 
  694      typename ustring::const_iterator end_format_iterator =  fmt.cend();
 
  695      for (
typename ustring::const_iterator iterator = fmt.cbegin(); iterator != fmt.cend(); ++iterator) {
 
  696        if (*iterator == 
'{') {
 
  698          if (*iterator == 
'{')
 
  701            begin_format_iterator = iterator;
 
  702            while (*iterator != 
'}' && iterator != fmt.end()) ++iterator;
 
  703            if (iterator == fmt.end())
 
  704              __throw_ustring_format_exception_open_bracket();
 
  705            end_format_iterator = iterator;
 
  706            __format_information<char> fi;
 
  707            fi.location = result.size();
 
  708            std::string 
format {begin_format_iterator, end_format_iterator};
 
  712              size_t index_alignment_separator = 
ustring(
format).index_of(
',');
 
  713              size_t index_format_separator = 
ustring(
format).index_of(u8
':');
 
  715              if (index_alignment_separator != std::string::npos && index_format_separator != std::string::npos && index_alignment_separator > index_format_separator)
 
  716                index_alignment_separator = std::string::npos;
 
  718              if (index_alignment_separator != std::string::npos)
 
  719                fi.alignment = 
format.substr(index_alignment_separator + 1, index_format_separator != std::string::npos ? index_format_separator - index_alignment_separator - 1 : std::string::npos);
 
  721              if (index_format_separator != std::string::npos)
 
  724              if (index_alignment_separator == 0 || index_format_separator == 0)
 
  727                std::string index_str;
 
  728                if (index_alignment_separator != std::string::npos)
 
  729                  index_str = 
format.substr(0, index_alignment_separator);
 
  730                else if (index_format_separator != std::string::npos)
 
  731                  index_str = 
format.substr(0, index_format_separator);
 
  735                  for (
auto c : index_str)
 
  736                    if (!std::isdigit(
c)) __throw_ustring_format_exception_start_colon();
 
  737                  fi.index = std::stoi(index_str);
 
  739                  __throw_ustring_format_exception_start_colon();
 
  743            formats.push_back(fi);
 
  745        } 
else if (*iterator == 
'}') {
 
  746          if (++iterator == fmt.cend())
 
  747            __throw_ustring_format_exception_close_bracket();
 
  748          if (*iterator != 
'}')
 
  749            __throw_ustring_format_exception_close_bracket();
 
  755      __ustring_extract_format_arg(result, formats, std::forward<args_t>(args)...);
 
  756      return result.c_str();
 
  777    size_t index_of(value_type value, 
size_t start_index) const noexcept;
 
  790    size_t index_of(value_type value, 
size_t start_index, 
size_t count) const noexcept;
 
  797    size_t index_of(const 
ustring& value, 
size_t start_index, 
size_t count) const noexcept;
 
  802    size_t index_of_any(const std::vector<value_type>& values) const noexcept;
 
  808    size_t index_of_any(const std::vector<value_type>& values, 
size_t start_index) const noexcept;
 
  815    size_t index_of_any(const std::vector<value_type>& values, 
size_t start_index, 
size_t count) const noexcept;
 
  818    size_t index_of_any(const std::initializer_list<value_type>& values) const noexcept;
 
  819    size_t index_of_any(const std::initializer_list<value_type>& values, 
size_t start_index) const noexcept;
 
  820    size_t index_of_any(const std::initializer_list<value_type>& values, 
size_t start_index, 
size_t count) const noexcept;
 
  841    template<typename collection_t>
 
  851    template<
typename collection_t>
 
  862    template<
typename collection_t>
 
  866      for (
const auto& item : values) {
 
  869          result += 
format(
"{}", item);
 
  871        if (++
i >= index + count) 
break;
 
  877    template<
typename value_t>
 
  879    template<
typename value_t>
 
  881    template<
typename value_t>
 
  882    static ustring join(
const ustring& 
separator, 
const std::initializer_list<value_t>& values, 
size_t index, 
size_t count) 
noexcept {
return join(
separator, std::vector<value_t>(values), index, count);}
 
  913    size_t last_index_of(value_type value, 
size_t start_index, 
size_t count) 
const noexcept;
 
  931    size_t last_index_of_any(
const std::vector<value_type>& values, 
size_t start_index) 
const noexcept;
 
  938    size_t last_index_of_any(
const std::vector<value_type>& values, 
size_t start_index, 
size_t count) 
const noexcept;
 
  941    size_t last_index_of_any(
const std::initializer_list<value_type>& values) 
const noexcept;
 
  942    size_t last_index_of_any(
const std::initializer_list<value_type>& values, 
size_t start_index) 
const noexcept;
 
  943    size_t last_index_of_any(
const std::initializer_list<value_type>& values, 
size_t start_index, 
size_t count) 
const noexcept;
 
 1017    std::vector<ustring> 
split() const noexcept;
 
 1024    std::vector<
ustring> 
split(const std::vector<value_type>& separators) const noexcept;
 
 1052    std::vector<
ustring> 
split(const std::vector<value_type>& separators, 
size_t count) const noexcept;
 
 1113    template<typename ... args_t>
 
 1114    static 
ustring sprintf(const 
ustring& fmt, args_t&& ... args) noexcept {
return __sprintf(fmt.c_str(), convert_param(std::forward<args_t>(args)) ...);}
 
 1161    std::vector<value_type> 
to_array(
size_t start_index) const noexcept;
 
 1167    std::vector<value_type> 
to_array(
size_t start_index, 
size_t length) const noexcept;
 
 1196    ustring trim(const std::vector<value_type>& trim_chars) const noexcept;
 
 1234    template<typename value_t>
 
 1235    static value_t parse(const 
ustring& str) {
 
 1236      return xtd::parse<value_t>(str);
 
 1239    template<
typename value_t>
 
 1240    static bool try_parse(
const ustring& str, value_t& value) {
 
 1242        value = parse<value_t>(str);
 
 1250    friend std::ostream& operator<<(std::ostream& stream, 
const ustring& str) {
return stream << str.c_str();}
 
 1251    friend std::istream& operator>>(std::istream& stream, 
ustring& str) {
 
 1260      result.append(str_b);
 
 1264    friend ustring operator+(
const ustring& str_a, 
const std::string& str_b) {
 
 1266      result.append(
ustring(str_b));
 
 1270    friend ustring operator+(
const ustring& str_a, 
const value_type* str_b) {
 
 1272      result.append(
ustring(str_b));
 
 1276    friend ustring operator+(
const ustring& str_a, 
const std::u8string& str_b) {
 
 1278      result.append(
ustring(str_b));
 
 1282    friend ustring operator+(
const ustring& str_a, 
const char8_t* str_b) {
 
 1284      result.append(
ustring(str_b));
 
 1288    friend ustring operator+(
const ustring& str_a, 
const std::u16string& str_b) {
 
 1290      result.append(
ustring(str_b));
 
 1294    friend ustring operator+(
const ustring& str_a, 
const char16_t* str_b) {
 
 1296      result.append(
ustring(str_b));
 
 1300    friend ustring operator+(
const ustring& str_a, 
const std::u32string& str_b) {
 
 1302      result.append(
ustring(str_b));
 
 1306    friend ustring operator+(
const ustring& str_a, 
const char32_t* str_b) {
 
 1308      result.append(
ustring(str_b));
 
 1312    friend ustring operator+(
const ustring& str_a, 
const std::wstring& str_b) {
 
 1314      result.append(
ustring(str_b));
 
 1318    friend ustring operator+(
const ustring& str_a, 
const wchar_t* str_b) {
 
 1320      result.append(
ustring(str_b));
 
 1324    friend ustring operator+(
const ustring& str_a, value_type character) {
 
 1326      result.append(
ustring(1, character));
 
 1330    friend ustring operator+(
const ustring& str_a, 
char8_t character) {
 
 1332      result.append(
ustring(1, character));
 
 1336    friend ustring operator+(
const ustring& str_a, 
char16_t character) {
 
 1338      result.append(
ustring(1, character));
 
 1342    friend ustring operator+(
const ustring& str_a, 
char32_t character) {
 
 1344      result.append(
ustring(1, character));
 
 1348    friend ustring operator+(
const ustring& str_a, 
wchar_t character) {
 
 1350      result.append(
ustring(1, character));
 
 1354    friend ustring operator+(
const ustring& str_a, 
const std::initializer_list<value_type>& il) {
 
 1360    friend ustring operator+(
const ustring& str_a, 
const std::initializer_list<char8_t>& il) {
 
 1366    friend ustring operator+(
const ustring& str_a, 
const std::initializer_list<char16_t>& il) {
 
 1372    friend ustring operator+(
const ustring& str_a, 
const std::initializer_list<char32_t>& il) {
 
 1378    friend ustring operator+(
const ustring& str_a, 
const std::initializer_list<wchar_t>& il) {
 
 1384    friend ustring operator+(
const std::string& str_a, 
const ustring& str_b) {
 
 1386      result.append(str_b);
 
 1390    friend ustring operator+(
const value_type* str_a, 
const ustring& str_b) {
 
 1392      result.append(str_b);
 
 1396    friend ustring operator+(
const std::u8string& str_a, 
const ustring& str_b) {
 
 1398      result.append(str_b);
 
 1402    friend ustring operator+(
const char8_t* str_a, 
const ustring& str_b) {
 
 1404      result.append(str_b);
 
 1408    friend ustring operator+(
const std::u16string& str_a, 
const ustring& str_b) {
 
 1410      result.append(str_b);
 
 1414    friend ustring operator+(
const char16_t* str_a, 
const ustring& str_b) {
 
 1416      result.append(str_b);
 
 1420    friend ustring operator+(
const std::u32string& str_a, 
const ustring& str_b) {
 
 1422      result.append(str_b);
 
 1426    friend ustring operator+(
const char32_t* str_a, 
const ustring& str_b) {
 
 1428      result.append(str_b);
 
 1432    friend ustring operator+(
const std::wstring& str_a, 
const ustring& str_b) {
 
 1434      result.append(str_b);
 
 1438    friend ustring operator+(
const wchar_t* str_a, 
const ustring& str_b) {
 
 1440      result.append(str_b);
 
 1444    friend ustring operator+(value_type character, 
const ustring& str_b) {
 
 1446      result.append(str_b);
 
 1450    friend ustring operator+(
char8_t character, 
const ustring& str_b) {
 
 1452      result.append(str_b);
 
 1456    friend ustring operator+(
char16_t character, 
const ustring& str_b) {
 
 1458      result.append(str_b);
 
 1462    friend ustring operator+(
char32_t character, 
const ustring& str_b) {
 
 1464      result.append(str_b);
 
 1468    friend ustring operator+(
wchar_t character, 
const ustring& str_b) {
 
 1470      result.append(str_b);
 
 1474    friend ustring operator+(
const std::initializer_list<value_type>& il, 
const ustring& str_b) {
 
 1476      result.append(str_b);
 
 1480    friend ustring operator+(
const std::initializer_list<char8_t>& il, 
const ustring& str_b) {
 
 1482      result.append(str_b);
 
 1486    friend ustring operator+(
const std::initializer_list<char16_t>& il, 
const ustring& str_b) {
 
 1488      result.append(str_b);
 
 1492    friend ustring operator+(
const std::initializer_list<char32_t>& il, 
const ustring& str_b) {
 
 1494      result.append(str_b);
 
 1498    friend ustring operator+(
const std::initializer_list<wchar_t>& il, 
const ustring& str_b) {
 
 1500      result.append(str_b);
 
 1506    template<
typename arg_t>
 
 1507    static auto convert_param(arg_t&& arg) 
noexcept {
 
 1508      if constexpr (std::is_same<std::remove_cv_t<std::remove_reference_t<arg_t>>, std::string>::value) 
return std::forward<arg_t>(arg).c_str();
 
 1509      else if constexpr (std::is_same<std::remove_cv_t<std::remove_reference_t<arg_t>>, std::wstring>::value) 
return std::forward<arg_t>(arg).c_str();
 
 1510      else return std::forward<arg_t>(arg);
 
 1515    using std::basic_string<value_type>::assign;
 
 1516    using std::basic_string<value_type>::reserve;
 
 1517    using std::basic_string<value_type>::shrink_to_fit;
 
 1518    using std::basic_string<value_type>
::clear;
 
 1519    using std::basic_string<value_type>::erase;
 
 1520    using std::basic_string<value_type>::push_back;
 
 1521    using std::basic_string<value_type>::pop_back;
 
 1522    using std::basic_string<value_type>::append;
 
 1523    using std::basic_string<value_type>
::replace;
 
 1524    using std::basic_string<value_type>::resize;
 
 1566  template <
typename type_t>
 
 1573template<
typename arg_t>
 
 1574void __ustring_extract_format_arg(std::string& fmt, 
size_t& index, std::vector<__format_information<char>>& formats, arg_t&& arg) {
 
 1576  for (
auto& format : formats) {
 
 1577    format.location += offset;
 
 1578    if (format.index == index) {
 
 1581      if (!format.alignment.empty()) {
 
 1584          alignment = std::stoi(format.alignment);
 
 1586          __throw_ustring_format_exception();
 
 1588        if (alignment > 0) arg_str = arg_str.
pad_left(alignment);
 
 1589        else if (alignment < 0) arg_str = arg_str.
pad_right(-alignment);
 
 1591      fmt.
insert(format.location, arg_str);
 
 1592      offset += arg_str.size();
 
 1598template <
typename ...args_t>
 
 1599void __xtd_ustrings_unused(args_t&& ... args) {}
 
 1601template<
typename ...args_t>
 
 1602void __ustring_extract_format_arg(
xtd::ustring& fmt, std::vector<__format_information<char>>& formats, args_t&&... args) {
 
 1604  (__ustring_extract_format_arg(fmt, index, formats, args),...);
 
 1605  __xtd_ustrings_unused(index); 
 
Supports all classes in the xtd class hierarchy and provides low-level services to derived classes....
Definition: object.h:26
 
Represents text as a sequence of UTF-8 code units.
Definition: ustring.h:48
 
ustring(std::initializer_list< value_type > il, const allocator_type &allocator)
Initializes a new instance of xtd::ustring with specified initializer list and allocator.
 
ustring remove(size_t start_index, size_t count) const noexcept
Deletes all the characters from this string beginning at a specified position and continuing through ...
 
static ustring concat(object_a_t obj_a, object_b_t obj_b, object_c_t obj_c) noexcept
Concatenates three specified instances of object.
Definition: ustring.h:565
 
size_t last_index_of_any(const std::vector< value_type > &values) const noexcept
Reports the index of the last occurrence in this instance of any character in a specified array of ch...
 
size_t last_index_of(const ustring &value, size_t start_index) const noexcept
Reports the index of the last occurrence of the specified character in this string....
 
size_t last_index_of(const ustring &value, size_t start_index, size_t count) const noexcept
Reports the index of the last occurrence of the specified character in this string....
 
ustring(std::initializer_list< char32_t > il, const allocator_type &allocator)
Initializes a new instance of xtd::ustring with specified initializer list and allocator.
 
ustring(std::initializer_list< char32_t > il)
Initializes a new instance of xtd::ustring with specified initializer list.
 
size_t last_index_of(value_type value) const noexcept
Reports the index of the last occurrence of the specified character in this tring.
 
ustring(std::initializer_list< wchar_t > il)
Initializes a new instance of xtd::ustring with specified initializer list.
 
bool is_empty() const noexcept
Indicates whether this string is an empty string ("").
 
ustring(input_iterator_t first, input_iterator_t last, const allocator_type &allocator)
Initializes a new instance of xtd::ustring with specified first and last iterators of substring and a...
Definition: ustring.h:278
 
static ustring demangle(const ustring &name)
Gets demangled string of name,.
Definition: ustring.h:628
 
static int compare(const ustring &str_a, size_t index_a, const ustring &str_b, size_t index_b, size_t length, xtd::string_comparison comparison_type) noexcept
Compares substrings of two specified string objects using the specified rules, and returns an integer...
 
ustring(std::initializer_list< char8_t > il)
Initializes a new instance of xtd::ustring with specified initializer list.
 
ustring(std::initializer_list< value_type > il)
Initializes a new instance of xtd::ustring with specified initializer list.
 
size_t last_index_of(value_type value, size_t start_index) const noexcept
Reports the index of the last occurrence of the specified character in this string....
 
ustring substring(size_t start_index, size_t length) const noexcept
Retrieves a substring from this instance. The substring starts at a specified character position and ...
 
static ustring concat(value_t value) noexcept
Creates the string representation of a specified object.
Definition: ustring.h:622
 
ustring replace(const ustring &old_string, const ustring &new_string) const noexcept
Replaces all occurrences of a specified string in this string with another specified string.
 
ustring pad_left(size_t total_width, value_type padding_char) const noexcept
Right-aligns the characters in this string, padding with spaces on the left for a specified total len...
 
ustring to_upper() const noexcept
Returns a copy of the current string converted to uppercase.
 
static int compare(const ustring &str_a, const ustring &str_b, bool ignore_case) noexcept
Compares two specified string objects, ignoring or honoring their case, and returns an integer that i...
 
ustring pad_right(size_t total_width, value_type padding_char) const noexcept
Left-aligns the characters in this string, padding with spaces on the right for a specified total len...
 
ustring insert(size_t start_index, const ustring &value) const noexcept
Inserts a specified instance of string at a specified index position in this instance.
 
static ustring join(const ustring &separator, const collection_t &values, size_t index, size_t count) noexcept
Concatenates a specified separator string between each element of a specified Object array,...
Definition: ustring.h:863
 
size_t index_of_any(const std::vector< value_type > &values) const noexcept
Reports the index of the first occurrence in this instance of any character in a specified array of c...
 
std::vector< value_type > to_array() const noexcept
Copies the characters in this instance to a Unicode character array.
 
ustring(std::initializer_list< char16_t > il)
Initializes a new instance of xtd::ustring with specified initializer list.
 
static ustring class_name(const object_t &object)
Gets the class name of the specified object.
Definition: ustring.h:450
 
ustring trim() const noexcept
Removes all leading and trailing occurrences of white-space characters from the specified String.
 
std::vector< ustring > split(const std::vector< value_type > &separators, size_t count, string_split_options options) const noexcept
Splits this string into a maximum number of substrings based on the characters in an array.
 
std::vector< ustring > split() const noexcept
Splits this string into substrings that are based on the default white-space characters....
 
ustring trim_end() const noexcept
Removes all trailing occurrences of white-space characters from the specified String.
 
static ustring concat(object_a_t obj_a, object_b_t obj_b, object_c_t obj_c, object_d_t obj_d) noexcept
Concatenates four specified instances of object.
Definition: ustring.h:548
 
size_t index_of(value_type value) const noexcept
Reports the index of the first occurrence of the specified character in this string.
 
ustring pad_right(size_t total_width) const noexcept
Left-aligns the characters in this string, padding with spaces on the right for a specified total len...
 
bool starts_with(value_type value, bool ignore_case) const noexcept
Determines whether the beginning of this instance of String matches a specified String,...
 
static ustring class_name(const std::type_info &info)
Gets the class name of the specified object.
Definition: ustring.h:455
 
static ustring concat(const std::vector< object_t > &args) noexcept
Concatenates the string representations of the elements in a specified object array.
Definition: ustring.h:601
 
static ustring full_class_name(const object_t &object)
Gets the fully qualified class name of the specified object, including the namespace of the specified...
Definition: ustring.h:433
 
ustring(std::initializer_list< char16_t > il, const allocator_type &allocator)
Initializes a new instance of xtd::ustring with specified initializer list and allocator.
 
ustring trim_start() const noexcept
Removes all leading occurrences of white-space characters from the specified String.
 
size_t last_index_of(const ustring &value) const noexcept
Reports the index of the last occurrence of the specified string in this string.
 
ustring replace(value_type old_char, value_type new_char) const noexcept
Replaces all occurrences of a specified char_t in this string with another specified char_t.
 
static int compare(const ustring &str_a, size_t index_a, const ustring &str_b, size_t index_b, size_t length, bool ignore_case) noexcept
Compares substrings of two specified string objects, ignoring or honoring their case,...
 
static ustring empty_string() noexcept
Represents the empty string.
 
size_t last_index_of_any(const std::vector< value_type > &values, size_t start_index, size_t count) const noexcept
Reports the index of the last occurrence in this instance of any character in a specified array of ch...
 
static ustring join(const ustring separator, const collection_t &values) noexcept
Concatenates a specified separator string between each element of a specified object array,...
Definition: ustring.h:842
 
static ustring concat(const ustring &str_a, const ustring &str_b, const ustring &str_c, const ustring &str_d) noexcept
Concatenates four specified instances of string.
 
static ustring full_class_name()
Gets the fully qualified class name of the objec_t, including the namespace of the objec_t.
Definition: ustring.h:427
 
static ustring concat(object_a_t obj_a, object_b_t obj_b) noexcept
Concatenates two specified instances of object.
Definition: ustring.h:580
 
static int compare(const ustring &str_a, const ustring &str_b, xtd::string_comparison comparison_type) noexcept
Compares two specified string objects using the specified rules, and returns an integer that indicate...
 
static int compare(const ustring &str_a, const ustring &str_b) noexcept
Compares two specified string objects and returns an integer that indicates their relative position i...
 
ustring pad_left(size_t total_width) const noexcept
Right-aligns the characters in this string, padding with spaces on the left for a specified total len...
 
static ustring class_name()
Gets the class name of the object_t.
Definition: ustring.h:444
 
size_t last_index_of(value_type value, size_t start_index, size_t count) const noexcept
Reports the index of the last occurrence of the specified character in this string....
 
bool ends_with(value_type value) const noexcept
Determines whether the end of this string matches the specified character.
 
size_t get_hash_code() const noexcept override
Returns the hash code for this string.
 
bool starts_with(const ustring &value) const noexcept
Determines whether the beginning of this instance of String matches a specified String.
 
ustring(std::initializer_list< wchar_t > il, const allocator_type &allocator)
Initializes a new instance of xtd::ustring with specified initializer list and allocator.
 
ustring remove(size_t start_index) const noexcept
Deletes all the characters from this string beginning at a specified position and continuing through ...
 
static ustring concat(const std::vector< ustring > &values) noexcept
Concatenates the elements of a specified string array.
 
static ustring concat(const ustring &str_a, const ustring &str_b, const ustring &str_c) noexcept
Concatenates three specified instances of string.
 
ustring substring(size_t start_index) const noexcept
Retrieves a substring from this instance. The substring starts at a specified character position and ...
 
ustring() noexcept
Initializes a new instance of xtd::ustring.
 
bool starts_with(value_type value) const noexcept
Determines whether the beginning of this instance of String matches a specified String.
 
ustring to_string() const noexcept override
Returns a std::string that represents the current object.
 
ustring(std::initializer_list< char8_t > il, const allocator_type &allocator)
Initializes a new instance of xtd::ustring with specified initializer list and allocator.
 
static ustring join(const ustring &separator, const collection_t &values, size_t index) noexcept
Concatenates a specified separator string between each element of a specified object array,...
Definition: ustring.h:852
 
static ustring concat(const ustring &str_a, const ustring &str_b) noexcept
Concatenates two specified instances of string.
 
bool contains(const ustring &value) const noexcept
Returns a value indicating whether a specified substring occurs within this string.
 
size_t last_index_of_any(const std::vector< value_type > &values, size_t start_index) const noexcept
Reports the index of the last occurrence in this instance of any character in a specified array of ch...
 
ustring to_lower() const noexcept
Returns a copy of the current string converted to lowercase.
 
static int compare(const ustring &str_a, size_t index_a, const ustring &str_b, size_t index_b, size_t length) noexcept
Compares substrings of two specified string objects and returns an integer that indicates their relat...
 
bool starts_with(const ustring &value, bool ignore_case) const noexcept
Determines whether the beginning of this instance of String matches a specified String,...
 
static ustring full_class_name(const std::type_info &info)
Gets the fully qualified class name of the specified object, including the namespace of the specified...
Definition: ustring.h:438
 
string_comparison
Specifies the culture, case, and sort rules to be used by certain overloads of the xtd::ustring::comp...
Definition: string_comparison.h:17
 
string_split_options
Specifies whether applicable xtd::ustring::split method overloads include or omit empty substrings fr...
Definition: string_split_options.h:17
 
std::string to_string(const value_t &value, const std::string &fmt, const std::locale &loc)
Convert a specified value into a string with specified format and locale.
Definition: to_string.h:37
 
@ separator
The Separator key.
 
@ insert
The INS (INSERT) key.
 
@ stream
Supports reliable, two-way, connection-based byte streams without the duplication of data and without...
 
The xtd namespace contains all fundamental classes to access Hardware, Os, System,...
Definition: system_report.h:17
 
ustring to_ustring(int val)
Converts a signed integer to xtd::ustring.
 
Contains xtd::object class.
 
Contains xtd::parse methods.
 
Contains xtd::string_comparison enum class.
 
Contains xtd::string_split_options enum class.
 
Contains xtd::to_string methods.
 
Contains xtd fundamental types.