103 std::u32string m_string;
105#if TGUI_COMPILED_WITH_CPP_VER >= 17
107 template <
typename StringViewType>
108 using IsStringViewType = std::enable_if_t<
109 std::is_same_v<StringViewType, std::string_view>
110#if defined(__cpp_lib_char8_t) && (__cpp_lib_char8_t >= 201811L)
111 || std::is_same_v<StringViewType, std::u8string_view>
113 || std::is_same_v<StringViewType, std::wstring_view>
114 || std::is_same_v<StringViewType, std::u16string_view>
115 || std::is_same_v<StringViewType, std::u32string_view>,
121#if TGUI_COMPILED_WITH_CPP_VER >= 17
122 static constexpr auto npos = std::u32string_view::npos;
124 static const decltype(std::u32string::npos) npos;
127 using iterator = std::u32string::iterator;
128 using const_iterator = std::u32string::const_iterator;
129 using reverse_iterator = std::u32string::reverse_iterator;
130 using const_reverse_iterator = std::u32string::const_reverse_iterator;
132 using value_type = char32_t;
133 using reference =
char32_t&;
134 using const_reference =
const char32_t&;
176 TGUI_NODISCARD
int toInt(
int defaultValue = 0)
const;
186 TGUI_NODISCARD
unsigned int toUInt(
unsigned int defaultValue = 0)
const;
196 TGUI_NODISCARD
float toFloat(
float defaultValue = 0)
const;
232#ifndef TGUI_REMOVE_DEPRECATED_CODE
242 TGUI_DEPRECATED(
"Use starts_with instead") TGUI_NODISCARD
bool startsWith(const
String& substring) const;
254#ifndef TGUI_REMOVE_DEPRECATED_CODE
264 TGUI_DEPRECATED(
"Use ends_with instead") TGUI_NODISCARD
bool endsWith(const
String& substring) const;
302 TGUI_NODISCARD std::vector<String>
split(
const String& delimiter,
bool trim =
false)
const;
311 TGUI_NODISCARD
static String join(
const std::vector<String>& segments,
const String& separator);
321 template <
typename T>
327 TGUI_IF_CONSTEXPR (std::is_integral<T>::value)
329 return {std::to_string(value)};
333 std::ostringstream oss;
334 oss.imbue(std::locale::classic());
349 template <
typename T>
355 TGUI_IF_CONSTEXPR (std::is_integral<T>::value)
356 return {std::to_string(value)};
359 std::ostringstream oss;
360 oss.imbue(std::locale::classic());
361 oss << std::fixed << std::setprecision(static_cast<int>(decimals));
372 String(
const std::string& str);
373 String(
const std::wstring& str);
374 String(
const std::u16string& str);
375 String(
const std::u32string& str);
377 String(std::u32string&& str) :
378 m_string{std::move(str)}
382 String(
char ansiChar);
383 String(
wchar_t wideChar);
384 String(
char16_t utfChar);
385 String(
char32_t utfChar);
387 String(
const char* str);
388 String(
const wchar_t* str);
389 String(
const char16_t* str);
390 String(
const char32_t* str) :
396 template <typename T, typename = typename std::enable_if_t<std::is_arithmetic<T>::value, T>>
397 explicit String(T number) :
398 String{fromNumber(number)}
402 String(std::size_t count,
char ch);
403 String(std::size_t count,
wchar_t ch);
404 String(std::size_t count,
char16_t ch);
405 String(std::size_t count,
char32_t ch);
407 String(
const std::string& str, std::size_t pos);
408 String(
const std::wstring& str, std::size_t pos);
409 String(
const std::u16string& str, std::size_t pos);
410 String(
const std::u32string& str, std::size_t pos);
412 String(
const std::string& str, std::size_t pos, std::size_t count);
413 String(
const std::wstring& str, std::size_t pos, std::size_t count);
414 String(
const std::u16string& str, std::size_t pos, std::size_t count);
415 String(
const std::u32string& str, std::size_t pos, std::size_t count);
417 String(
const char* str, std::size_t count);
418 String(
const wchar_t* str, std::size_t count);
419 String(
const char16_t* str, std::size_t count);
420 String(
const char32_t* str, std::size_t count);
422 explicit String(std::initializer_list<char> chars);
423 explicit String(std::initializer_list<wchar_t> chars);
424 explicit String(std::initializer_list<char16_t> chars);
425 explicit String(std::initializer_list<char32_t> chars);
431 explicit String(std::string::const_iterator first, std::string::const_iterator last);
432 explicit String(std::wstring::const_iterator first, std::wstring::const_iterator last);
433 explicit String(std::u16string::const_iterator first, std::u16string::const_iterator last);
434 explicit String(std::u32string::const_iterator first, std::u32string::const_iterator last);
436#if TGUI_COMPILED_WITH_CPP_VER >= 17
437 template <
typename StringViewType,
typename = IsStringViewType<StringViewType>>
438 explicit String(
const StringViewType& stringView) :
439 String(stringView.data(), stringView.size())
443 template <
typename StringViewType,
typename = IsStringViewType<StringViewType>>
444 explicit String(
const StringViewType& stringView, std::size_t pos, std::size_t count) :
445 String(stringView.data() + pos, count)
449 template <
typename CharType>
450 explicit String(StringViewImpl<CharType> stringView) :
451 String(stringView.data(), stringView.size())
455 template <
typename CharType>
456 explicit String(StringViewImpl<CharType> stringView, std::size_t pos, std::size_t count) :
457 String(stringView.data() + pos, count)
462#if TGUI_HAS_WINDOW_BACKEND_SFML
464 explicit String(
const sf::String& str)
465 : m_string{reinterpret_cast<const char32_t*>(str.toUtf32().c_str())}
469 explicit operator sf::String()
const
471 return sf::String::fromUtf32(m_string.begin(), m_string.end());
475 explicit operator std::string()
const;
476 explicit operator std::wstring()
const;
477 explicit operator std::u16string()
const;
478 explicit operator const std::u32string&()
const
483 operator StringView() const noexcept
485#if TGUI_COMPILED_WITH_CPP_VER >= 17
488 return StringView(m_string.data(), m_string.length());
492 TGUI_NODISCARD std::string toStdString()
const;
493 TGUI_NODISCARD std::wstring toWideString()
const;
494 TGUI_NODISCARD std::u16string toUtf16()
const;
495 TGUI_NODISCARD
const std::u32string& toUtf32()
const
500 String& assign(std::size_t count,
char ch);
501 String& assign(std::size_t count,
wchar_t ch);
502 String& assign(std::size_t count,
char16_t ch);
503 String& assign(std::size_t count,
char32_t ch);
505 String& assign(StringView sv);
506 String& assign(
const char32_t* str);
507 String& assign(
const std::u32string& str);
508 String& assign(
const String& str);
510 String& assign(StringView sv, std::size_t pos, std::size_t count = npos);
511 String& assign(
const std::string& str, std::size_t pos, std::size_t count = npos);
512 String& assign(
const std::wstring& str, std::size_t pos, std::size_t count = npos);
513 String& assign(
const std::u16string& str, std::size_t pos, std::size_t count = npos);
514 String& assign(
const std::u32string& str, std::size_t pos, std::size_t count = npos);
515 String& assign(
const String& str, std::size_t pos, std::size_t count = npos);
517 String& assign(std::u32string&& str);
518 String& assign(String&& str);
520 String& assign(
const char* str, std::size_t count);
521 String& assign(
const wchar_t* str, std::size_t count);
522 String& assign(
const char16_t* str, std::size_t count);
523 String& assign(
const char32_t* str, std::size_t count);
525 String& assign(std::initializer_list<char> chars);
526 String& assign(std::initializer_list<wchar_t> chars);
527 String& assign(std::initializer_list<char16_t> chars);
528 String& assign(std::initializer_list<char32_t> chars);
530 String& assign(std::string::const_iterator first, std::string::const_iterator last);
531 String& assign(std::wstring::const_iterator first, std::wstring::const_iterator last);
532 String& assign(std::u16string::const_iterator first, std::u16string::const_iterator last);
533 String& assign(std::u32string::const_iterator first, std::u32string::const_iterator last);
534 String& assign(StringView::const_iterator first, StringView::const_iterator last);
536 TGUI_NODISCARD reference at(std::size_t pos);
537 TGUI_NODISCARD const_reference at(std::size_t pos)
const;
539 TGUI_NODISCARD const_reference operator [](std::size_t index)
const;
540 TGUI_NODISCARD reference operator [](std::size_t index);
542 TGUI_NODISCARD reference front();
543 TGUI_NODISCARD const_reference front()
const;
545 TGUI_NODISCARD reference back();
546 TGUI_NODISCARD const_reference back()
const;
548 TGUI_NODISCARD
const char32_t* data() const noexcept
550 return m_string.data();
553 TGUI_NODISCARD
char32_t* data() noexcept
555#if __cplusplus >= 201703L
556 return m_string.data();
562 TGUI_NODISCARD
const char32_t* c_str() const noexcept
564 return m_string.c_str();
567 TGUI_NODISCARD iterator begin() noexcept;
568 TGUI_NODISCARD const_iterator begin() const noexcept;
569 TGUI_NODISCARD const_iterator cbegin() const noexcept;
571 TGUI_NODISCARD iterator end() noexcept;
572 TGUI_NODISCARD const_iterator end() const noexcept;
573 TGUI_NODISCARD const_iterator cend() const noexcept;
575 TGUI_NODISCARD reverse_iterator rbegin() noexcept;
576 TGUI_NODISCARD const_reverse_iterator rbegin() const noexcept;
577 TGUI_NODISCARD const_reverse_iterator crbegin() const noexcept;
579 TGUI_NODISCARD reverse_iterator rend() noexcept;
580 TGUI_NODISCARD const_reverse_iterator rend() const noexcept;
581 TGUI_NODISCARD const_reverse_iterator crend() const noexcept;
583 TGUI_NODISCARD
bool empty() const noexcept
585 return m_string.empty();
588 TGUI_NODISCARD std::size_t size() const noexcept
590 return m_string.size();
593 TGUI_NODISCARD std::size_t length() const noexcept
595 return m_string.length();
598 TGUI_NODISCARD std::size_t max_size() const noexcept;
600 void reserve(std::
size_t newCap);
601 TGUI_NODISCARD std::
size_t capacity() const noexcept;
602 void shrink_to_fit();
604 void clear() noexcept;
606 String& insert(std::
size_t index, std::
size_t count,
char ch);
607 String& insert(std::
size_t index, std::
size_t count,
wchar_t ch);
608 String& insert(std::
size_t index, std::
size_t count,
char16_t ch);
609 String& insert(std::
size_t index, std::
size_t count,
char32_t ch);
611 String& insert(std::
size_t index, StringView sv);
612 String& insert(std::
size_t index, const
char32_t* str);
613 String& insert(std::
size_t index, const std::u32string& str);
614 String& insert(std::
size_t index, const String& str);
616 String& insert(std::
size_t index, StringView sv, std::
size_t pos, std::
size_t count = npos);
617 String& insert(std::
size_t index, const std::
string& str, std::
size_t pos, std::
size_t count = npos);
618 String& insert(std::
size_t index, const std::wstring& str, std::
size_t pos, std::
size_t count = npos);
619 String& insert(std::
size_t index, const std::u16string& str, std::
size_t pos, std::
size_t count = npos);
620 String& insert(std::
size_t index, const std::u32string& str, std::
size_t pos, std::
size_t count = npos);
621 String& insert(std::
size_t index, const String& str, std::
size_t pos, std::
size_t count = npos);
623 String& insert(std::
size_t index, const
char* str, std::
size_t count);
624 String& insert(std::
size_t index, const
wchar_t* str, std::
size_t count);
625 String& insert(std::
size_t index, const
char16_t* str, std::
size_t count);
626 String& insert(std::
size_t index, const
char32_t* str, std::
size_t count);
628 iterator insert(const_iterator pos,
char ch);
629 iterator insert(const_iterator pos,
wchar_t ch);
630 iterator insert(const_iterator pos,
char16_t ch);
631 iterator insert(const_iterator pos,
char32_t ch);
633 iterator insert(const_iterator pos, std::
size_t count,
char ch);
634 iterator insert(const_iterator pos, std::
size_t count,
wchar_t ch);
635 iterator insert(const_iterator pos, std::
size_t count,
char16_t ch);
636 iterator insert(const_iterator pos, std::
size_t count,
char32_t ch);
638 iterator insert(const_iterator pos, std::initializer_list<
char> chars);
639 iterator insert(const_iterator pos, std::initializer_list<
wchar_t> chars);
640 iterator insert(const_iterator pos, std::initializer_list<
char16_t> chars);
641 iterator insert(const_iterator pos, std::initializer_list<
char32_t> chars);
643 iterator insert(const_iterator pos, std::
string::const_iterator first, std::
string::const_iterator last);
644 iterator insert(const_iterator pos, std::wstring::const_iterator first, std::wstring::const_iterator last);
645 iterator insert(const_iterator pos, std::u16string::const_iterator first, std::u16string::const_iterator last);
646 iterator insert(const_iterator pos, std::u32string::const_iterator first, std::u32string::const_iterator last);
647 iterator insert(const_iterator pos, StringView::const_iterator first, StringView::const_iterator last);
649 String& erase(std::
size_t index = 0, std::
size_t count = npos);
651 iterator erase(const_iterator position);
652 iterator erase(const_iterator first, const_iterator last);
654 void push_back(
char ch);
655 void push_back(
wchar_t ch);
656 void push_back(
char16_t ch);
657 void push_back(
char32_t ch);
661 String& append(std::
size_t count,
char ch);
662 String& append(std::
size_t count,
wchar_t ch);
663 String& append(std::
size_t count,
char16_t ch);
664 String& append(std::
size_t count,
char32_t ch);
666 String& append(StringView sv);
667 String& append(const
char32_t* str);
668 String& append(const std::u32string& str);
669 String& append(const String& str);
671 String& append(StringView sv, std::
size_t pos, std::
size_t count = npos);
672 String& append(const std::
string& str, std::
size_t pos, std::
size_t count = npos);
673 String& append(const std::wstring& str, std::
size_t pos, std::
size_t count = npos);
674 String& append(const std::u16string& str, std::
size_t pos, std::
size_t count = npos);
675 String& append(const std::u32string& str, std::
size_t pos, std::
size_t count = npos);
676 String& append(const String& str, std::
size_t pos, std::
size_t count = npos);
678 String& append(const
char* str, std::
size_t count);
679 String& append(const
wchar_t* str, std::
size_t count);
680 String& append(const
char16_t* str, std::
size_t count);
681 String& append(const
char32_t* str, std::
size_t count);
683 String& append(std::
string::const_iterator first, std::
string::const_iterator last);
684 String& append(std::wstring::const_iterator first, std::wstring::const_iterator last);
685 String& append(std::u16string::const_iterator first, std::u16string::const_iterator last);
686 String& append(std::u32string::const_iterator first, std::u32string::const_iterator last);
687 String& append(StringView::const_iterator first, StringView::const_iterator last);
689 String& append(std::initializer_list<
char> chars);
690 String& append(std::initializer_list<
wchar_t> chars);
691 String& append(std::initializer_list<
char16_t> chars);
692 String& append(std::initializer_list<
char32_t> chars);
694 String& operator+=(const String& str);
696 TGUI_NODISCARD
int compare(StringView sv) const noexcept;
697 TGUI_NODISCARD
int compare(const
char32_t* s) const;
698 TGUI_NODISCARD
int compare(const std::u32string& str) const noexcept;
699 TGUI_NODISCARD
int compare(const String& str) const noexcept;
701 TGUI_NODISCARD
int compare(std::
size_t pos1, std::
size_t count1, StringView sv) const;
702 TGUI_NODISCARD
int compare(std::
size_t pos1, std::
size_t count1, const
char32_t* s) const;
703 TGUI_NODISCARD
int compare(std::
size_t pos1, std::
size_t count1, const std::u32string& str) const;
704 TGUI_NODISCARD
int compare(std::
size_t pos1, std::
size_t count1, const String& str) const;
706 TGUI_NODISCARD
int compare(std::
size_t pos1, std::
size_t count1, StringView sv, std::
size_t pos2, std::
size_t count2 = npos) const;
707 TGUI_NODISCARD
int compare(std::
size_t pos1, std::
size_t count1, const std::
string& str, std::
size_t pos2, std::
size_t count2 = npos) const;
708 TGUI_NODISCARD
int compare(std::
size_t pos1, std::
size_t count1, const std::wstring& str, std::
size_t pos2, std::
size_t count2 = npos) const;
709 TGUI_NODISCARD
int compare(std::
size_t pos1, std::
size_t count1, const std::u16string& str, std::
size_t pos2, std::
size_t count2 = npos) const;
710 TGUI_NODISCARD
int compare(std::
size_t pos1, std::
size_t count1, const std::u32string& str, std::
size_t pos2, std::
size_t count2 = npos) const;
711 TGUI_NODISCARD
int compare(std::
size_t pos1, std::
size_t count1, const String& str, std::
size_t pos2, std::
size_t count2 = npos) const;
713 TGUI_NODISCARD
int compare(std::
size_t pos1, std::
size_t count1, const
char* s, std::
size_t count2) const;
714 TGUI_NODISCARD
int compare(std::
size_t pos1, std::
size_t count1, const
wchar_t* s, std::
size_t count2) const;
715 TGUI_NODISCARD
int compare(std::
size_t pos1, std::
size_t count1, const
char16_t* s, std::
size_t count2) const;
716 TGUI_NODISCARD
int compare(std::
size_t pos1, std::
size_t count1, const
char32_t* s, std::
size_t count2) const;
718 String& replace(std::
size_t pos, std::
size_t count, StringView sv);
719 String& replace(std::
size_t pos, std::
size_t count, const
char32_t* cstr);
720 String& replace(std::
size_t pos, std::
size_t count, const std::u32string& str);
721 String& replace(std::
size_t pos, std::
size_t count, const String& str);
723 String& replace(const_iterator first, const_iterator last, StringView sv);
724 String& replace(const_iterator first, const_iterator last, const
char32_t* cstr);
725 String& replace(const_iterator first, const_iterator last, const std::u32string& str);
726 String& replace(const_iterator first, const_iterator last, const String& str);
728 String& replace(std::
size_t pos, std::
size_t count, StringView sv, std::
size_t pos2, std::
size_t count2 = npos);
729 String& replace(std::
size_t pos, std::
size_t count, const std::
string& str, std::
size_t pos2, std::
size_t count2 = npos);
730 String& replace(std::
size_t pos, std::
size_t count, const std::wstring& str, std::
size_t pos2, std::
size_t count2 = npos);
731 String& replace(std::
size_t pos, std::
size_t count, const std::u16string& str, std::
size_t pos2, std::
size_t count2 = npos);
732 String& replace(std::
size_t pos, std::
size_t count, const std::u32string& str, std::
size_t pos2, std::
size_t count2 = npos);
733 String& replace(std::
size_t pos, std::
size_t count, const String& str, std::
size_t pos2, std::
size_t count2 = npos);
735 String& replace(const_iterator first, const_iterator last, std::
string::const_iterator first2, std::
string::const_iterator last2);
736 String& replace(const_iterator first, const_iterator last, std::wstring::const_iterator first2, std::wstring::const_iterator last2);
737 String& replace(const_iterator first, const_iterator last, std::u16string::const_iterator first2, std::u16string::const_iterator last2);
738 String& replace(const_iterator first, const_iterator last, std::u32string::const_iterator first2, std::u32string::const_iterator last2);
739 String& replace(const_iterator first, const_iterator last, StringView::const_iterator first2, StringView::const_iterator last2);
741 String& replace(std::
size_t pos, std::
size_t count, const
char* cstr, std::
size_t count2);
742 String& replace(std::
size_t pos, std::
size_t count, const
wchar_t* cstr, std::
size_t count2);
743 String& replace(std::
size_t pos, std::
size_t count, const
char16_t* cstr, std::
size_t count2);
744 String& replace(std::
size_t pos, std::
size_t count, const
char32_t* cstr, std::
size_t count2);
746 String& replace(const_iterator first, const_iterator last, const
char* cstr, std::
size_t count2);
747 String& replace(const_iterator first, const_iterator last, const
wchar_t* cstr, std::
size_t count2);
748 String& replace(const_iterator first, const_iterator last, const
char16_t* cstr, std::
size_t count2);
749 String& replace(const_iterator first, const_iterator last, const
char32_t* cstr, std::
size_t count2);
751 String& replace(std::
size_t pos, std::
size_t count, std::
size_t count2,
char ch);
752 String& replace(std::
size_t pos, std::
size_t count, std::
size_t count2,
wchar_t ch);
753 String& replace(std::
size_t pos, std::
size_t count, std::
size_t count2,
char16_t ch);
754 String& replace(std::
size_t pos, std::
size_t count, std::
size_t count2,
char32_t ch);
756 String& replace(const_iterator first, const_iterator last, std::
size_t count2,
char ch);
757 String& replace(const_iterator first, const_iterator last, std::
size_t count2,
wchar_t ch);
758 String& replace(const_iterator first, const_iterator last, std::
size_t count2,
char16_t ch);
759 String& replace(const_iterator first, const_iterator last, std::
size_t count2,
char32_t ch);
761 String& replace(const_iterator first, const_iterator last, std::initializer_list<
char> chars);
762 String& replace(const_iterator first, const_iterator last, std::initializer_list<
wchar_t> chars);
763 String& replace(const_iterator first, const_iterator last, std::initializer_list<
char16_t> chars);
764 String& replace(const_iterator first, const_iterator last, std::initializer_list<
char32_t> chars);
766 TGUI_NODISCARD String substr(std::
size_t pos = 0, std::
size_t count = npos) const;
768 std::
size_t copy(
char32_t* dest, std::
size_t count, std::
size_t pos = 0) const;
770 void resize(std::
size_t count);
771 void resize(std::
size_t count,
char ch);
772 void resize(std::
size_t count,
wchar_t ch);
773 void resize(std::
size_t count,
char16_t ch);
774 void resize(std::
size_t count,
char32_t ch);
776 void swap(String& other);
778 TGUI_NODISCARD
bool contains(
char c) const noexcept;
779 TGUI_NODISCARD
bool contains(
wchar_t c) const noexcept;
780 TGUI_NODISCARD
bool contains(
char16_t c) const noexcept;
781 TGUI_NODISCARD
bool contains(
char32_t c) const noexcept;
783 TGUI_NODISCARD
bool contains(StringView sv) const noexcept;
784 TGUI_NODISCARD
bool contains(const
char32_t* s) const;
785 TGUI_NODISCARD
bool contains(const std::u32string& s) const;
786 TGUI_NODISCARD
bool contains(const String& s) const;
788 TGUI_NODISCARD std::
size_t find(StringView sv, std::
size_t pos = 0) const noexcept;
789 TGUI_NODISCARD std::
size_t find(const
char32_t* s, std::
size_t pos = 0) const;
790 TGUI_NODISCARD std::
size_t find(const std::u32string& str, std::
size_t pos = 0) const noexcept;
791 TGUI_NODISCARD std::
size_t find(const String& str, std::
size_t pos = 0) const noexcept;
793 TGUI_NODISCARD std::
size_t find(const
char* s, std::
size_t pos, std::
size_t count) const;
794 TGUI_NODISCARD std::
size_t find(const
wchar_t* s, std::
size_t pos, std::
size_t count) const;
795 TGUI_NODISCARD std::
size_t find(const
char16_t* s, std::
size_t pos, std::
size_t count) const;
796 TGUI_NODISCARD std::
size_t find(const
char32_t* s, std::
size_t pos, std::
size_t count) const;
798 TGUI_NODISCARD std::
size_t find(
char ch, std::
size_t pos = 0) const noexcept;
799 TGUI_NODISCARD std::
size_t find(
wchar_t ch, std::
size_t pos = 0) const noexcept;
800 TGUI_NODISCARD std::
size_t find(
char16_t ch, std::
size_t pos = 0) const noexcept;
801 TGUI_NODISCARD std::
size_t find(
char32_t ch, std::
size_t pos = 0) const noexcept;
803 TGUI_NODISCARD std::
size_t find_first_of(StringView sv, std::
size_t pos = 0) const noexcept;
804 TGUI_NODISCARD std::
size_t find_first_of(const
char32_t* s, std::
size_t pos = 0) const;
805 TGUI_NODISCARD std::
size_t find_first_of(const std::u32string& str, std::
size_t pos = 0) const noexcept;
806 TGUI_NODISCARD std::
size_t find_first_of(const String& str, std::
size_t pos = 0) const noexcept;
808 TGUI_NODISCARD std::
size_t find_first_of(const
char* s, std::
size_t pos, std::
size_t count) const;
809 TGUI_NODISCARD std::
size_t find_first_of(const
wchar_t* s, std::
size_t pos, std::
size_t count) const;
810 TGUI_NODISCARD std::
size_t find_first_of(const
char16_t* s, std::
size_t pos, std::
size_t count) const;
811 TGUI_NODISCARD std::
size_t find_first_of(const
char32_t* s, std::
size_t pos, std::
size_t count) const;
813 TGUI_NODISCARD std::
size_t find_first_of(
char ch, std::
size_t pos = 0) const noexcept;
814 TGUI_NODISCARD std::
size_t find_first_of(
wchar_t ch, std::
size_t pos = 0) const noexcept;
815 TGUI_NODISCARD std::
size_t find_first_of(
char16_t ch, std::
size_t pos = 0) const noexcept;
816 TGUI_NODISCARD std::
size_t find_first_of(
char32_t ch, std::
size_t pos = 0) const noexcept;
818 TGUI_NODISCARD std::
size_t find_first_not_of(StringView sv, std::
size_t pos = 0) const noexcept;
819 TGUI_NODISCARD std::
size_t find_first_not_of(const
char32_t* s, std::
size_t pos = 0) const;
820 TGUI_NODISCARD std::
size_t find_first_not_of(const std::u32string& str, std::
size_t pos = 0) const noexcept;
821 TGUI_NODISCARD std::
size_t find_first_not_of(const String& str, std::
size_t pos = 0) const noexcept;
823 TGUI_NODISCARD std::
size_t find_first_not_of(const
char* s, std::
size_t pos, std::
size_t count) const;
824 TGUI_NODISCARD std::
size_t find_first_not_of(const
wchar_t* s, std::
size_t pos, std::
size_t count) const;
825 TGUI_NODISCARD std::
size_t find_first_not_of(const
char16_t* s, std::
size_t pos, std::
size_t count) const;
826 TGUI_NODISCARD std::
size_t find_first_not_of(const
char32_t* s, std::
size_t pos, std::
size_t count) const;
828 TGUI_NODISCARD std::
size_t find_first_not_of(
char ch, std::
size_t pos = 0) const noexcept;
829 TGUI_NODISCARD std::
size_t find_first_not_of(
wchar_t ch, std::
size_t pos = 0) const noexcept;
830 TGUI_NODISCARD std::
size_t find_first_not_of(
char16_t ch, std::
size_t pos = 0) const noexcept;
831 TGUI_NODISCARD std::
size_t find_first_not_of(
char32_t ch, std::
size_t pos = 0) const noexcept;
833 TGUI_NODISCARD std::
size_t rfind(StringView sv, std::
size_t pos = npos) const noexcept;
834 TGUI_NODISCARD std::
size_t rfind(const
char32_t* s, std::
size_t pos = npos) const;
835 TGUI_NODISCARD std::
size_t rfind(const std::u32string& str, std::
size_t pos = npos) const noexcept;
836 TGUI_NODISCARD std::
size_t rfind(const String& str, std::
size_t pos = npos) const noexcept;
838 TGUI_NODISCARD std::
size_t rfind(const
char* s, std::
size_t pos, std::
size_t count) const;
839 TGUI_NODISCARD std::
size_t rfind(const
wchar_t* s, std::
size_t pos, std::
size_t count) const;
840 TGUI_NODISCARD std::
size_t rfind(const
char16_t* s, std::
size_t pos, std::
size_t count) const;
841 TGUI_NODISCARD std::
size_t rfind(const
char32_t* s, std::
size_t pos, std::
size_t count) const;
843 TGUI_NODISCARD std::
size_t rfind(
char ch, std::
size_t pos = npos) const noexcept;
844 TGUI_NODISCARD std::
size_t rfind(
wchar_t ch, std::
size_t pos = npos) const noexcept;
845 TGUI_NODISCARD std::
size_t rfind(
char16_t ch, std::
size_t pos = npos) const noexcept;
846 TGUI_NODISCARD std::
size_t rfind(
char32_t ch, std::
size_t pos = npos) const noexcept;
848 TGUI_NODISCARD std::
size_t find_last_of(StringView sv, std::
size_t pos = npos) const noexcept;
849 TGUI_NODISCARD std::
size_t find_last_of(const
char32_t* s, std::
size_t pos = npos) const;
850 TGUI_NODISCARD std::
size_t find_last_of(const std::u32string& str, std::
size_t pos = npos) const noexcept;
851 TGUI_NODISCARD std::
size_t find_last_of(const String& str, std::
size_t pos = npos) const noexcept;
853 TGUI_NODISCARD std::
size_t find_last_of(const
char* s, std::
size_t pos, std::
size_t count) const;
854 TGUI_NODISCARD std::
size_t find_last_of(const
wchar_t* s, std::
size_t pos, std::
size_t count) const;
855 TGUI_NODISCARD std::
size_t find_last_of(const
char16_t* s, std::
size_t pos, std::
size_t count) const;
856 TGUI_NODISCARD std::
size_t find_last_of(const
char32_t* s, std::
size_t pos, std::
size_t count) const;
858 TGUI_NODISCARD std::
size_t find_last_of(
char ch, std::
size_t pos = npos) const noexcept;
859 TGUI_NODISCARD std::
size_t find_last_of(
wchar_t ch, std::
size_t pos = npos) const noexcept;
860 TGUI_NODISCARD std::
size_t find_last_of(
char16_t ch, std::
size_t pos = npos) const noexcept;
861 TGUI_NODISCARD std::
size_t find_last_of(
char32_t ch, std::
size_t pos = npos) const noexcept;
863 TGUI_NODISCARD std::
size_t find_last_not_of(StringView sv, std::
size_t pos = npos) const noexcept;
864 TGUI_NODISCARD std::
size_t find_last_not_of(const
char32_t* s, std::
size_t pos = npos) const;
865 TGUI_NODISCARD std::
size_t find_last_not_of(const std::u32string& str, std::
size_t pos = npos) const noexcept;
866 TGUI_NODISCARD std::
size_t find_last_not_of(const String& str, std::
size_t pos = npos) const noexcept;
868 TGUI_NODISCARD std::
size_t find_last_not_of(const
char* s, std::
size_t pos, std::
size_t count) const;
869 TGUI_NODISCARD std::
size_t find_last_not_of(const
wchar_t* s, std::
size_t pos, std::
size_t count) const;
870 TGUI_NODISCARD std::
size_t find_last_not_of(const
char16_t* s, std::
size_t pos, std::
size_t count) const;
871 TGUI_NODISCARD std::
size_t find_last_not_of(const
char32_t* s, std::
size_t pos, std::
size_t count) const;
873 TGUI_NODISCARD std::
size_t find_last_not_of(
char ch, std::
size_t pos = npos) const noexcept;
874 TGUI_NODISCARD std::
size_t find_last_not_of(
wchar_t ch, std::
size_t pos = npos) const noexcept;
875 TGUI_NODISCARD std::
size_t find_last_not_of(
char16_t ch, std::
size_t pos = npos) const noexcept;
876 TGUI_NODISCARD std::
size_t find_last_not_of(
char32_t ch, std::
size_t pos = npos) const noexcept;
878 TGUI_NODISCARD inline
bool starts_with(StringView sv) const noexcept;
879 TGUI_NODISCARD inline
bool starts_with(const
char32_t* s) const;
880 TGUI_NODISCARD inline
bool starts_with(const std::u32string& s) const;
881 TGUI_NODISCARD inline
bool starts_with(const String& s) const;
883 TGUI_NODISCARD inline
bool starts_with(
char ch) const noexcept;
884 TGUI_NODISCARD inline
bool starts_with(
wchar_t ch) const noexcept;
885 TGUI_NODISCARD inline
bool starts_with(
char16_t ch) const noexcept;
886 TGUI_NODISCARD inline
bool starts_with(
char32_t ch) const noexcept;
888 TGUI_NODISCARD inline
bool ends_with(StringView sv) const noexcept;
889 TGUI_NODISCARD inline
bool ends_with(const
char32_t* s) const;
890 TGUI_NODISCARD inline
bool ends_with(const std::u32string& s) const;
891 TGUI_NODISCARD inline
bool ends_with(const String& s) const;
893 TGUI_NODISCARD inline
bool ends_with(
char ch) const noexcept;
894 TGUI_NODISCARD inline
bool ends_with(
wchar_t ch) const noexcept;
895 TGUI_NODISCARD inline
bool ends_with(
char16_t ch) const noexcept;
896 TGUI_NODISCARD inline
bool ends_with(
char32_t ch) const noexcept;
898 TGUI_NODISCARD std::
size_t count(const
char ch, const std::
size_t pos = 0) const noexcept;
899 TGUI_NODISCARD std::
size_t count(const
wchar_t ch, const std::
size_t pos = 0) const noexcept;
900 TGUI_NODISCARD std::
size_t count(const
char16_t ch, const std::
size_t pos = 0) const noexcept;
901 TGUI_NODISCARD std::
size_t count(const
char32_t ch, const std::
size_t pos = 0) const noexcept;
903 inline friend
bool operator==(const String& left, StringView right);
904 inline friend
bool operator==(const String& left, const
char32_t* right);
905 inline friend
bool operator==(const String& left, const std::u32string& right);
906 inline friend
bool operator==(const String& left, const String& right);
908 inline friend
bool operator!=(const String& left, StringView right);
909 inline friend
bool operator!=(const String& left, const
char32_t* right);
910 inline friend
bool operator!=(const String& left, const std::u32string& right);
911 inline friend
bool operator!=(const String& left, const String& right);
913 inline friend
bool operator<(const String& left, StringView right);
914 inline friend
bool operator<(const String& left, const
char32_t* right);
915 inline friend
bool operator<(const String& left, const std::u32string& right);
916 inline friend
bool operator<(const String& left, const String& right);
918 inline friend
bool operator<=(const String& left, StringView right);
919 inline friend
bool operator<=(const String& left, const
char32_t* right);
920 inline friend
bool operator<=(const String& left, const std::u32string& right);
921 inline friend
bool operator<=(const String& left, const String& right);
923 inline friend
bool operator>(const String& left, StringView right);
924 inline friend
bool operator>(const String& left, const
char32_t* right);
925 inline friend
bool operator>(const String& left, const std::u32string& right);
926 inline friend
bool operator>(const String& left, const String& right);
928 inline friend
bool operator>=(const String& left, StringView right);
929 inline friend
bool operator>=(const String& left, const
char32_t* right);
930 inline friend
bool operator>=(const String& left, const std::u32string& right);
931 inline friend
bool operator>=(const String& left, const String& right);
933 inline friend String operator+(const String& left, const String& right);
934 inline friend String operator+(const String& left, String&& right);
935 inline friend String operator+(String&& left, const String& right);
936 inline friend String operator+(String&& left, String&& right);
938#if defined(__cpp_lib_char8_t) && (__cpp_lib_char8_t >= 201811L)
939 inline String(
const std::u8string& str);
940 inline String(
char8_t utfChar);
941 inline String(
const char8_t* str);
942 inline String(std::size_t count,
char8_t ch);
943 inline String(
const std::u8string& str, std::size_t pos);
944 inline String(
const std::u8string& str, std::size_t pos, std::size_t count);
945 inline String(
const char8_t* str, std::size_t count);
946 inline explicit String(std::initializer_list<char8_t> chars);
947 inline explicit String(std::u8string::const_iterator first, std::u8string::const_iterator last);
949 inline explicit operator std::u8string()
const;
951 TGUI_NODISCARD
inline std::u8string toUtf8()
const;
953 inline String& assign(std::size_t count,
char8_t ch);
954 inline String& assign(
const std::u8string& str, std::size_t pos, std::size_t count = npos);
955 inline String& assign(
const char8_t* str, std::size_t count);
956 inline String& assign(std::initializer_list<char8_t> chars);
957 inline String& assign(std::u8string::const_iterator first, std::u8string::const_iterator last);
959 inline String& insert(std::size_t index, std::size_t count,
char8_t ch);
960 inline String& insert(std::size_t index,
const std::u8string& str, std::size_t pos, std::size_t count = npos);
961 inline String& insert(std::size_t index,
const char8_t* str, std::size_t count);
962 inline iterator insert(const_iterator pos,
char8_t ch);
963 inline iterator insert(const_iterator pos, std::size_t count,
char8_t ch);
964 inline iterator insert(const_iterator pos, std::initializer_list<char8_t> chars);
965 inline iterator insert(const_iterator pos, std::u8string::const_iterator first, std::u8string::const_iterator last);
967 inline String& append(std::size_t count,
char8_t ch);
968 inline String& append(
const std::u8string& str, std::size_t pos, std::size_t count = npos);
969 inline String& append(
const char8_t* str, std::size_t count);
970 inline String& append(std::initializer_list<char8_t> chars);
971 inline String& append(std::u8string::const_iterator first, std::u8string::const_iterator last);
973 TGUI_NODISCARD
inline int compare(std::size_t pos1, std::size_t count1,
const std::u8string& str, std::size_t pos2, std::size_t count2 = npos)
const;
974 TGUI_NODISCARD
inline int compare(std::size_t pos1, std::size_t count1,
const char8_t* s, std::size_t count2)
const;
976 inline String& replace(std::size_t pos, std::size_t count,
const std::u8string& str, std::size_t pos2, std::size_t count2 = npos);
977 inline String& replace(const_iterator first, const_iterator last, std::u8string::const_iterator first2, std::u8string::const_iterator last2);
978 inline String& replace(std::size_t pos, std::size_t count,
const char8_t* cstr, std::size_t count2);
979 inline String& replace(const_iterator first, const_iterator last,
const char8_t* cstr, std::size_t count2);
980 inline String& replace(std::size_t pos, std::size_t count, std::size_t count2,
char8_t ch);
981 inline String& replace(const_iterator first, const_iterator last, std::size_t count2,
char8_t ch);
982 inline String& replace(const_iterator first, const_iterator last, std::initializer_list<char8_t> chars);
984 inline void resize(std::size_t count,
char8_t ch);
986 TGUI_NODISCARD
inline bool contains(
char8_t c)
const noexcept;
988 TGUI_NODISCARD
inline std::size_t find(
const char8_t* s, std::size_t pos, std::size_t count)
const;
989 TGUI_NODISCARD
inline std::size_t find(
char8_t ch, std::size_t pos = 0) const noexcept;
991 TGUI_NODISCARD inline std::
size_t find_first_of(const
char8_t* s, std::
size_t pos, std::
size_t count) const;
992 TGUI_NODISCARD inline std::
size_t find_first_of(
char8_t ch, std::
size_t pos = 0) const noexcept;
994 TGUI_NODISCARD inline std::
size_t find_first_not_of(const
char8_t* s, std::
size_t pos, std::
size_t count) const;
995 TGUI_NODISCARD inline std::
size_t find_first_not_of(
char8_t ch, std::
size_t pos = 0) const noexcept;
997 TGUI_NODISCARD inline std::
size_t rfind(const
char8_t* s, std::
size_t pos, std::
size_t count) const;
998 TGUI_NODISCARD inline std::
size_t rfind(
char8_t ch, std::
size_t pos = npos) const noexcept;
1000 TGUI_NODISCARD inline std::
size_t find_last_of(const
char8_t* s, std::
size_t pos, std::
size_t count) const;
1001 TGUI_NODISCARD inline std::
size_t find_last_of(
char8_t ch, std::
size_t pos = npos) const noexcept;
1003 TGUI_NODISCARD inline std::
size_t find_last_not_of(const
char8_t* s, std::
size_t pos, std::
size_t count) const;
1004 TGUI_NODISCARD inline std::
size_t find_last_not_of(
char8_t ch, std::
size_t pos = npos) const noexcept;
1006 TGUI_NODISCARD inline
bool starts_with(
char8_t ch) const noexcept;
1007 TGUI_NODISCARD inline
bool ends_with(
char8_t ch) const noexcept;