xtd 1.0.0
Loading...
Searching...
No Matches
basic_string_builder.hpp
Go to the documentation of this file.
1
4#pragma once
5#include "../basic_string.hpp"
6#include "../environment.hpp"
8#include "../range.hpp"
9#include <iterator>
12namespace xtd {
14 namespace text {
32 template<typename char_t, typename traits_t = std::char_traits<char_t>, typename allocator_t = xtd::collections::generic::helpers::allocator<char_t >>
33 class basic_string_builder final : public object, public xtd::iequatable<basic_string_builder<char_t, traits_t, allocator_t>> {
34 public:
36
40 using base_type = std::basic_string<char_t, traits_t, allocator_t>;
42 using traits_type = typename base_type::traits_type;
44 using value_type = typename base_type::value_type;
46 using allocator_type = typename base_type::allocator_type;
48 using size_type = typename base_type::size_type;
50 using difference_type = typename base_type::difference_type;
52 using reference = typename base_type::reference;
54 using const_reference = typename base_type::const_reference;
56 using pointer = typename base_type::pointer;
58 using const_pointer = typename base_type::const_pointer;
61 using iterator = typename base_type::iterator;
64 using const_iterator = typename base_type::const_iterator;
66 using reverse_iterator = typename base_type::reverse_iterator;
68 using const_reverse_iterator = typename base_type::const_reverse_iterator;
70
72
82 inline static constexpr size_type npos = base_type::npos;
84
86
159 basic_string_builder(const xtd::basic_string<value_type>& value, xtd::usize start_index, xtd::usize length, xtd::usize capacity) : chars_(value.substring(start_index, length).chars()) {self_.capacity(capacity);}
160
163 explicit basic_string_builder(const allocator_type & allocator) noexcept : chars_(allocator) {}
164
167 basic_string_builder(const basic_string_builder & str) noexcept : chars_(str.chars_) {}
171 basic_string_builder(const basic_string_builder & str, const allocator_type & allocator) noexcept : chars_(str.chars_, allocator) {}
172
181
190
200
208 chars_ = base_type(str.chars_, index, count, allocator);
209 }
210
213 basic_string_builder(basic_string_builder&& str) noexcept : chars_(std::move(str.chars_)) {}
217 basic_string_builder(basic_string_builder&& str, const allocator_type & allocator) noexcept : chars_(std::move(str.chars_), allocator) {}
218
227 basic_string_builder(xtd::usize count, value_type character, const allocator_type & allocator) : chars_(count, character, allocator) {}
228
237 basic_string_builder(value_type character, xtd::usize count, const allocator_type & allocator) : chars_(count, character, allocator) {}
238
241 basic_string_builder(const_pointer str) { // Can't be explicit by design.
243 chars_ = base_type(str);
244 }
245
252
259
263 basic_string_builder(const_pointer str, xtd::usize count, const allocator_type & allocator) : chars_(allocator) {
265 chars_ = base_type(str, count);
266 }
267
270 basic_string_builder(const std::basic_string<value_type>& str) noexcept : chars_(str) {}; // Can't be explicit by design.
274 basic_string_builder(const std::basic_string<value_type>& str, const allocator_type & allocator) noexcept : chars_(str, allocator) {}
275
279 template<typename input_iterator_t>
280 basic_string_builder(input_iterator_t first, input_iterator_t last) : chars_(first, last) {}
285 template<typename input_iterator_t>
286 basic_string_builder(input_iterator_t first, input_iterator_t last, const allocator_type & allocator) : chars_(first, last, allocator) {}
287
290 basic_string_builder(std::initializer_list<value_type> il) : chars_(il) {}
291
295 basic_string_builder(std::initializer_list<value_type> il, const allocator_type & allocator) : chars_(il, allocator) {}
297
299
303 [[nodiscard]] auto begin() const -> const_iterator {return chars_.begin();}
306 [[nodiscard]] auto begin() -> iterator {return chars_.begin();}
307
316 [[nodiscard]] auto c_str() const noexcept -> const_pointer {return chars_.c_str();}
317
320 [[nodiscard]] auto capacity() const noexcept -> size_type {return chars_.capacity();}
325 chars_.reserve(value);
326 return self_;
327 }
328
331 [[nodiscard]] auto cbegin() const -> const_iterator {return chars_.cbegin();}
332
335 [[nodiscard]] auto chars() const noexcept -> const base_type& {return chars_;}
336
339 [[nodiscard]] auto chars() noexcept -> base_type& {return chars_;}
340
343 [[nodiscard]] auto cend() const -> const_iterator {return chars_.cend();}
344
352 [[nodiscard]] auto data() const noexcept -> const_pointer {return chars_.data();}
360 [[nodiscard]] auto data() noexcept -> pointer {return chars_.data();}
361
364 [[nodiscard]] auto empty() const noexcept -> bool {return chars_.empty();}
365
368 [[nodiscard]] auto end() const -> const_iterator {return chars_.end();}
371 [[nodiscard]] auto end() -> iterator {return chars_.end();}
372
380 [[nodiscard]] auto length() const noexcept -> size_type {return chars_.size();}
390 auto length(size_type value) noexcept -> basic_string_builder& {
391 if (value != length()) chars_.resize(value);
392 return self_;
393 }
394
397 [[nodiscard]] auto max_capacity() const noexcept -> size_type {return max_capacity_;}
398
401 [[nodiscard]] auto size() const noexcept -> size_type {return length();}
403
405
458 auto append(const xtd::basic_string<char_t>& value, size_type start_index, size_type count) -> basic_string_builder& {return append(basic_string_builder {value, start_index, count});}
477 auto append(xtd::boolean value) -> basic_string_builder& {return append_format("{}", value);}
497 auto append(xtd::byte value) -> basic_string_builder& {return append_format("{}", value);}
516 auto append(xtd::decimal value) -> basic_string_builder& {return append_format("{}", value);}
535 auto append(double value) -> basic_string_builder& {return append_format("{}", value);}
554 auto append(xtd::single value) -> basic_string_builder& {return append_format("{}", value);}
573 auto append(xtd::int16 value) -> basic_string_builder& {return append_format("{}", value);}
592 auto append(xtd::int32 value) -> basic_string_builder& {return append_format("{}", value);}
611 auto append(xtd::int64 value) -> basic_string_builder& {return append_format("{}", value);}
631 auto append(xtd::sbyte value) -> basic_string_builder& {return append_format("{}", value);}
650 auto append(xtd::uint16 value) -> basic_string_builder& {return append_format("{}", value);}
669 auto append(xtd::uint32 value) -> basic_string_builder& {return append_format("{}", value);}
688 auto append(xtd::uint64 value) -> basic_string_builder& {return append_format("{}", value);}
711 auto append(value_type value) -> basic_string_builder& {return append(1_z, value);}
731 auto append(value_type value, size_type repeat_count) -> basic_string_builder& {return append(repeat_count, value);}
732
734 auto append(xtd::slong value) -> basic_string_builder& {return append_format("{}", value);}
735 auto append(xtd::ulong value) -> basic_string_builder& {return append_format("{}", value);}
737
748 template<typename object_t>
749 auto append(object_t value) -> basic_string_builder& {return append_format("{}", value);}
768 auto append(const basic_string_builder & str) -> basic_string_builder& {return append(str, 0, str.length());}
780 auto append(const basic_string_builder & str, size_type pos) -> basic_string_builder& {return append(str, pos, str.length() - pos);}
795 if (pos > str.length() || pos + count > str.length()) xtd::helpers::throw_helper::throws(xtd::helpers::exception_case::argument_out_of_range);
796 chars_.append(str.chars_, pos, count);
797 return self_;
798 }
799
827 template<typename input_iterator_t>
832
840 auto append(std::initializer_list<value_type> ilist) -> basic_string_builder& {return append(basic_string_builder {ilist});}
841
861 template<typename ...args_t>
862 auto append_format(const xtd::basic_string<char_t>& format, args_t&& ... args) -> basic_string_builder& {return append(xtd::basic_string<char_t>::format(format, std::forward<args_t>(args)...));}
863
872 template<typename collection_t>
882 template<typename collection_t>
884
886 template<typename value_t>
887 auto append_join(const xtd::basic_string<char_t>& separator, const std::initializer_list<value_t>& values) -> basic_string_builder& {return append_join(separator, xtd::array<value_t>(values));}
888 template<typename value_t>
889 auto append_join(value_type separator, const std::initializer_list<value_t>& values) -> basic_string_builder& {return append_join(separator, xtd::array<value_t>(values));}
891
906 auto append_line(const xtd::basic_string<char_t>& value) -> basic_string_builder& {return append(value).append_line();}
907
913 chars_.clear();
914 return self_;
915 }
916
925 auto copy_to(xtd::usize source_index, xtd::array<value_type>& destination, xtd::usize destination_index, xtd::usize destination_count) const -> void {
926 if (source_index > length() || source_index + destination_count > length()) xtd::helpers::throw_helper::throws(xtd::helpers::exception_case::argument_out_of_range);
927 if (destination_index >= destination.length() || destination_index + destination_count > destination.length()) xtd::helpers::throw_helper::throws(xtd::helpers::exception_case::argument_out_of_range);
928 chars_.copy(destination.data() + destination_index, destination_count, source_index);
929 }
930
934 [[nodiscard]] auto equals(const object & obj) const noexcept -> bool override {return dynamic_cast<const basic_string_builder*>(&obj) && equals(static_cast<const basic_string_builder&>(obj));}
939 [[nodiscard]] auto equals(const basic_string_builder & value) const noexcept -> bool override {return chars_ == value.chars_;}
940
947 if (self_.capacity() < capacity) self_.capacity(capacity);
948 return self_.capacity();
949 }
950
953 [[nodiscard]] auto get_base_type() const noexcept -> const base_type& {return chars_;}
954
957 [[nodiscard]] auto get_hash_code() const noexcept -> xtd::usize override {return xtd::hash_code::combine(chars_);}
958
968 auto insert(size_type index, const xtd::basic_string<char_t>& value) -> basic_string_builder& {return insert(index, basic_string_builder {value}, 0, value.length());}
1109 auto insert(size_type index, value_type value) -> basic_string_builder& {return insert(index, 1, value);}
1120 auto insert(size_type index, value_type value, size_type repeat_count) -> basic_string_builder& {return insert(index, repeat_count, value);}
1121
1126
1137 template<typename object_t>
1152
1173 auto insert(size_type index, const basic_string_builder & str) -> basic_string_builder& {return insert(index, str, 0, str.length());}
1182 auto insert(size_type index, const basic_string_builder & str, size_type s_index, size_type count) -> basic_string_builder& {
1185 if (s_index > str.length() || s_index + count > str.length()) xtd::helpers::throw_helper::throws(xtd::helpers::exception_case::argument_out_of_range);
1186 chars_.insert(index, str.chars_, s_index, count);
1187 return self_;
1188 }
1196 auto insert(size_type index, const basic_string_builder & str, size_type s_index) -> basic_string_builder& {return insert(index, str.chars_, s_index, str.length() - s_index);}
1197
1205 auto remove(size_type start_index, size_type length) -> basic_string_builder& {return erase(start_index, length);}
1206
1212 auto replace(value_type old_char, value_type new_char) noexcept -> basic_string_builder& {return replace(old_char, new_char, 0, length());}
1220 auto replace(value_type old_char, value_type new_char, size_type start_index, size_type count) -> basic_string_builder& {return replace(xtd::basic_string<char_t>(old_char, 1), xtd::basic_string<char_t>(new_char, 1), start_index, count);}
1227 auto replace(const xtd::basic_string<char_t>& old_value, const xtd::basic_string<char_t>& new_value) noexcept -> basic_string_builder& {return replace(old_value, new_value, 0, length());}
1236 auto replace(const xtd::basic_string<char_t>& old_value, const xtd::basic_string<char_t>& new_value, size_type start_index, size_type count) -> basic_string_builder& {
1238 auto old_size = old_value.length();
1239 auto new_size = new_value.length();
1240 auto index = xtd::usize {0};
1241 while (true) {
1242 index = chars_.find(old_value, index);
1243 if (index == npos || index >= start_index + count) break;
1244 if (index >= start_index) {
1245 if (old_size == new_size) replace(index, old_size, new_value);
1246 else {
1247 chars_.erase(index, old_value.length());
1248 insert(index, new_value);
1249 }
1250 }
1251 index += new_value.length();
1252 }
1253 return self_;
1254 }
1255
1264 chars_.replace(pos, count, str);
1265 return self_;
1266 }
1267
1275 chars_.replace(first, last, str);
1276 return self_;
1277 }
1288 chars_.replace(pos, count, str, pos2);
1289 return self_;
1290 }
1291
1301 if (pos2 > str.length() || pos2 + count2 > str.length()) xtd::helpers::throw_helper::throws(xtd::helpers::exception_case::argument_out_of_range);
1302 chars_.replace(pos, count, str, pos2, count2);
1303 return self_;
1304 }
1305
1314 chars_.replace(pos, count, cstr, count2);
1315 return self_;
1316 }
1317
1327 chars_.replace(first, last, cstr, count2);
1328 return self_;
1329 }
1337 chars_.replace(pos, count, cstr);
1338 return self_;
1339 }
1340
1347 chars_.replace(first, last, cstr);
1348 return self_;
1349 }
1358 chars_.replace(pos, count, count2, ch);
1359 return self_;
1360 }
1361
1369 chars_.replace(first, last, count2, ch);
1370 return self_;
1371 }
1380 template<typename input_iterator_t>
1381 auto replace(const_iterator first, const_iterator last, input_iterator_t first2, input_iterator_t last2) -> basic_string_builder& {
1382 chars_.replace(first, last, first2, last2);
1383 return self_;
1384 }
1392 auto replace(const_iterator first, const_iterator last, std::initializer_list<value_type> ilist) -> basic_string_builder& {
1393 chars_.replace(first, last, ilist);
1394 return self_;
1395 }
1396
1400 //xtd::string to_string() const noexcept override {return __xtd_convert_to_string<char>(chars_);}
1401 [[nodiscard]] auto to_string() const noexcept -> xtd::string override {return xtd::string {chars_};}
1403
1405
1407
1409
1411
1421
1429
1443 //return xtd::basic_read_only_string_view<type_t>(self(), range);
1444 auto [start, length] = range.get_offset_and_length(size());
1445 return xtd::basic_read_only_string_view<char_t> {chars_.begin() + start, chars_.begin() + start + length};
1446 }
1447
1451 //return xtd::basic_string_view<type_t>(self(), range);
1452 auto [start, length] = range.get_offset_and_length(size());
1453 return xtd::basic_string_view<char_t> {chars_.begin() + start, chars_.begin() + start + length};
1454 }
1455
1484
1487 operator const base_type& () const noexcept {return chars_;}
1490 operator base_type& () noexcept {return chars_;}
1491
1496 chars_ = str.chars_;
1497 return self_;
1498 }
1499
1504 chars_ = std::move(str.chars_);
1505 return self_;
1506 }
1507
1511 auto operator =(const std::basic_string<value_type>& str) noexcept -> basic_string_builder& {
1512 chars_ = str;
1513 return self_;
1514 }
1515
1519 auto operator =(std::basic_string<value_type>&& str) noexcept -> basic_string_builder& {
1520 chars_ = std::move(str);
1521 return self_;
1522 }
1523
1528 chars_ = str;
1529 return self_;
1530 }
1531
1536 chars_ = std::move(str);
1537 return self_;
1538 }
1539
1549
1554 chars_ = character;
1555 return self_;
1556 }
1557
1561 auto operator =(const std::initializer_list<value_type>& il) -> basic_string_builder& {
1562 chars_ = il;
1563 return self_;
1564 }
1565
1570 chars_ += str.chars_;
1571 return self_;
1572 }
1573
1578 chars_ += std::move(str.chars_);
1579 str.chars_.clear();
1580 return self_;
1581 }
1582
1591
1596 chars_ += ch;
1597 return self_;
1598 }
1599
1605 auto result = lhs;
1606 result += rhs;
1607 return result;
1608 }
1609
1615 auto result = std::move(lhs);
1616 result += std::move(rhs);
1617 return result;
1618 }
1619
1625 auto result = std::move(lhs);
1626 result += rhs;
1627 return result;
1628 }
1629
1635 auto result = lhs;
1636 result += std::move(rhs);
1637 return result;
1638 }
1639
1645 auto result = lhs;
1646 result += rhs;
1647 return result;
1648 }
1649
1655 auto result = std::move(lhs);
1656 result += rhs;
1657 return result;
1658 }
1659
1665 return lhs + rhs.chars_;
1666 }
1667
1673 return lhs + std::move(rhs).chars_;
1674 }
1675
1681 auto result = lhs;
1682 result += rhs;
1683 return result;
1684 }
1685
1691 auto result = std::move(lhs);
1692 result += rhs;
1693 return result;
1694 }
1695
1701 auto result = basic_string_builder(1, lhs);
1702 result += rhs;
1703 return result;
1704 }
1705
1711 auto result = basic_string_builder(1, lhs);
1712 result += std::move(rhs);
1713 return result;
1714 }
1715
1724 //friend std::basic_ostream<char>& operator <<(std::basic_ostream<char>& stream, const basic_string_builder& str) {return stream << str.to_string().chars_;}
1725 friend auto operator <<(std::ostream& stream, const basic_string_builder & str) -> std::ostream& {return stream << xtd::basic_string<char>(str.chars()).chars();}
1732 friend auto operator <<(std::wostream& stream, const basic_string_builder & str) -> std::wostream& {return stream << xtd::basic_string<xtd::wchar>(str.chars()).chars();}
1733
1742 friend auto operator >>(std::istream& stream, basic_string_builder & str) -> std::istream& {
1743 auto s = std::string {};
1744 stream >> s;
1746 return stream;
1747 }
1748
1756 friend auto operator >>(std::wistream& stream, basic_string_builder & str) -> std::wistream& {
1757 auto s = std::basic_string<xtd::wchar> {};
1758 stream >> s;
1760 return stream;
1761 }
1762
1763
1764 private:
1765 base_type chars_;
1766 size_type max_capacity_ = chars_.max_size();
1767 };
1768 }
1769}
Contains xtd::basic_string class.
Provides methods for creating, manipulating, searching, and sorting arrays, thereby serving as the ba...
Definition array.hpp:64
Represents text as a sequence of character units.
Definition basic_string.hpp:73
static auto join(const basic_string &separator, const collection_t &values) noexcept -> basic_string
Concatenates a specified separator basic_string between each element of a specified object array,...
Definition basic_string.hpp:1240
auto chars() const noexcept -> const base_type &
Returns a reference to the underlying base type.
Definition basic_string.hpp:339
static auto new_line() noexcept -> xtd::string
Gets the newline string defined for this environment.
static auto combine(args_t... values) noexcept -> xtd::usize
Combines values into a hash code.
Definition hash_code.hpp:70
static auto throws(xtd::helpers::exception_case exception_case, const source_location &location=source_location::current()) -> void
Throws an exption with specified exception case.
Defines a generalized method that a value type or class implements to create a type-specific method f...
Definition iequatable.hpp:23
object()=default
Create a new instance of the ultimate base class object.
Represents a range that has start and end indexes.
Definition range.hpp:38
auto get_offset_and_length(size_type length) const -> offset_and_length
Calculates the start offset and length of the range object using a collection length.
Definition range.hpp:112
Represents a mutable string of characters. This class cannot be inherited.
Definition basic_string_builder.hpp:33
auto chars() const noexcept -> const base_type &
Definition basic_string_builder.hpp:335
typename base_type::size_type size_type
Represents the basic string size type.
Definition basic_string_builder.hpp:48
auto append(const xtd::basic_string< char_t > &value, size_type start_index, size_type count) -> basic_string_builder &
Appends a copy of a specified substring to this instance.
Definition basic_string_builder.hpp:458
auto append(std::initializer_list< value_type > ilist) -> basic_string_builder &
Appends additional characters to the string.
Definition basic_string_builder.hpp:840
auto append(size_type count, value_type ch) -> basic_string_builder &
Appends additional characters to the string.
Definition basic_string_builder.hpp:759
auto insert(size_type index, xtd::int32 value) -> basic_string_builder &
Inserts the string representation of a specified 32-bit signed integer into this instance at the spec...
Definition basic_string_builder.hpp:1049
auto to_string() const noexcept -> xtd::string override
Replaces the characters in the range [begin() + pos, begin() + std::min(pos + count,...
Definition basic_string_builder.hpp:1401
static constexpr size_type npos
Definition basic_string_builder.hpp:82
typename base_type::difference_type difference_type
Represents the basic string difference type.
Definition basic_string_builder.hpp:50
auto c_str() const noexcept -> const_pointer
Returns a pointer to a null-terminated character array with data equivalent to those stored in the st...
Definition basic_string_builder.hpp:316
auto replace(value_type old_char, value_type new_char, size_type start_index, size_type count) -> basic_string_builder &
Replaces, within a substring of this instance, all occurrences of a specified character with another ...
Definition basic_string_builder.hpp:1220
basic_string_builder(input_iterator_t first, input_iterator_t last)
Initializes a new instance of xtd::text::basic_string_builder with specified first and last iterators...
Definition basic_string_builder.hpp:280
auto append(object_t value) -> basic_string_builder &
Appends the string representation of a specified object to this instance.
Definition basic_string_builder.hpp:749
auto insert(size_type index, xtd::single value) -> basic_string_builder &
Inserts the string representation of a specified single into this instance at the specified character...
Definition basic_string_builder.hpp:1029
auto append(double value) -> basic_string_builder &
Appends the string representation of a specified double value to this instance.
Definition basic_string_builder.hpp:535
auto max_capacity() const noexcept -> size_type
Definition basic_string_builder.hpp:397
auto end() const -> const_iterator
Returns an iterator to the character following the last character of the string. This character acts ...
Definition basic_string_builder.hpp:368
auto get_base_type() const noexcept -> const base_type &
Returns the underlying base type.
Definition basic_string_builder.hpp:953
typename base_type::traits_type traits_type
Represents the basic string traits type.
Definition basic_string_builder.hpp:42
basic_string_builder(const xtd::basic_string< value_type > &value, xtd::usize start_index, xtd::usize length, xtd::usize capacity)
Initializes a new instance of the xtd::text::basic_string_builder class from the specified substring ...
Definition basic_string_builder.hpp:159
basic_string_builder(const basic_string_builder &str, xtd::usize index)
Initializes a new instance of xtd::text::basic_string_builder with specified substring at index.
Definition basic_string_builder.hpp:177
auto get_hash_code() const noexcept -> xtd::usize override
Returns the hash code for this basic_string_builder.
Definition basic_string_builder.hpp:957
auto insert(size_type index, xtd::uint16 value) -> basic_string_builder &
Inserts the string representation of a specified 16-bit unsigned integer into this instance at the sp...
Definition basic_string_builder.hpp:1079
basic_string_builder(const_pointer str, xtd::usize count, const allocator_type &allocator)
Initializes a new instance of xtd::text::basic_string_builder with specified substring,...
Definition basic_string_builder.hpp:263
auto copy_to(xtd::usize source_index, xtd::array< value_type > &destination, xtd::usize destination_index, xtd::usize destination_count) const -> void
Copies the characters from a specified segment of this instance to a specified segment of a destinati...
Definition basic_string_builder.hpp:925
auto capacity() const noexcept -> size_type
Definition basic_string_builder.hpp:320
auto append_join(const xtd::basic_string< char_t > &separator, const collection_t &values) -> basic_string_builder &
Concatenates and appends the members of a collection, using the specified separator between each memb...
Definition basic_string_builder.hpp:873
basic_string_builder(const std::basic_string< value_type > &str, const allocator_type &allocator) noexcept
Initializes a new instance of xtd::text::basic_string_builder with specified string to copy and alloc...
Definition basic_string_builder.hpp:274
auto begin() -> iterator
Returns an iterator to the first character of the string.
Definition basic_string_builder.hpp:306
auto append(const basic_string_builder &str) -> basic_string_builder &
Appends additional characters to the string.
Definition basic_string_builder.hpp:768
basic_string_builder(xtd::usize capacity)
Initializes a new instance of the xtd::text::basic_string_builder class using the specified capacity.
Definition basic_string_builder.hpp:106
basic_string_builder(const xtd::basic_string< value_type > &value)
Initializes a new instance of the xtd::text::basic_string_builder class using the specified string.
Definition basic_string_builder.hpp:130
auto append(xtd::uint32 value) -> basic_string_builder &
Appends the string representation of a specified 32-bit unsigned integer value to this instance.
Definition basic_string_builder.hpp:669
auto append(input_iterator_t first, input_iterator_t last) -> basic_string_builder &
Appends additional characters to the string.
Definition basic_string_builder.hpp:828
basic_string_builder(const std::basic_string< value_type > &str) noexcept
Initializes a new instance of xtd::text::basic_string_builder with specified string to copy.
Definition basic_string_builder.hpp:270
auto insert(size_type index, value_type value) -> basic_string_builder &
Inserts the string representation of a specified Unicode character into this instance at the specifie...
Definition basic_string_builder.hpp:1109
auto append_join(value_type separator, const collection_t &values) -> basic_string_builder &
Concatenates and appends the members of a collection, using the specified xtd::basic_string_builder::...
Definition basic_string_builder.hpp:883
auto append(xtd::int16 value) -> basic_string_builder &
Appends the string representation of a specified 16-bit signed integer value to this instance.
Definition basic_string_builder.hpp:573
typename base_type::const_pointer const_pointer
Represents the basic string const pointer type.
Definition basic_string_builder.hpp:58
auto end() -> iterator
Returns an iterator to the character following the last character of the string. This character acts ...
Definition basic_string_builder.hpp:371
basic_string_builder(xtd::usize capacity, xtd::usize max_capacity)
Initializes a new instance of the xtd::text::basic_string_builder class that starts with a specified ...
Definition basic_string_builder.hpp:121
basic_string_builder(basic_string_builder &&str, const allocator_type &allocator) noexcept
Initializes a new instance of xtd::text::basic_string_builder with specified string to move and alloc...
Definition basic_string_builder.hpp:217
basic_string_builder(const basic_string_builder &str, xtd::usize index, const allocator_type &allocator)
Initializes a new instance of xtd::text::basic_string_builder with specified substring at index and a...
Definition basic_string_builder.hpp:186
auto append(xtd::sbyte value) -> basic_string_builder &
Appends the string representation of a specified 8-bit signed integer value to this instance.
Definition basic_string_builder.hpp:631
basic_string_builder(const basic_string_builder &str, xtd::usize index, xtd::usize count, const allocator_type &allocator)
Initializes a new instance of xtd::text::basic_string_builder with specified substring at index,...
Definition basic_string_builder.hpp:206
auto replace(size_type pos, size_type count, size_type count2, value_type ch) -> basic_string_builder &
Replaces the characters in the range [begin() + pos, begin() + std::min(pos + count,...
Definition basic_string_builder.hpp:1356
auto replace(size_type pos, size_type count, const basic_string_builder &str) -> basic_string_builder &
Replaces all occurrences of a specified string in this instance with another specified string.
Definition basic_string_builder.hpp:1262
basic_string_builder()=default
Initializes a new instance of xtd::text::basic_string_builder.
auto insert(size_type index, xtd::int64 value) -> basic_string_builder &
Inserts the string representation of a specified 64-bit signed integer into this instance at the spec...
Definition basic_string_builder.hpp:1059
auto insert(size_type index, xtd::uint32 value) -> basic_string_builder &
Inserts the string representation of a specified 32-bit unsigned integer into this instance at the sp...
Definition basic_string_builder.hpp:1089
auto append(xtd::decimal value) -> basic_string_builder &
Appends the string representation of a specified decimal value to this instance.
Definition basic_string_builder.hpp:516
basic_string_builder(const xtd::basic_string< value_type > &value, xtd::usize capacity)
Initializes a new instance of the xtd::text::basic_string_builder class using the specified string an...
Definition basic_string_builder.hpp:142
auto append(xtd::int64 value) -> basic_string_builder &
Appends the string representation of a specified 64-bit signed integer value to this instance.
Definition basic_string_builder.hpp:611
typename base_type::const_reference const_reference
Represents the basic string const referecne type.
Definition basic_string_builder.hpp:54
auto operator()(xtd::usize index) const -> const_reference
Returns a reference to the character at specified location index.
Definition basic_string_builder.hpp:1460
auto insert(size_type index, const xtd::basic_string< char_t > &value, size_type count) -> basic_string_builder &
Inserts one or more copies of a specified string into this instance at the specified character positi...
Definition basic_string_builder.hpp:979
auto replace(size_type pos, size_type count, const basic_string_builder &str, size_type pos2, size_type count2) -> basic_string_builder &
Replaces the characters in the range [begin() + pos, begin() + std::min(pos + count,...
Definition basic_string_builder.hpp:1299
auto data() noexcept -> pointer
Returns a pointer to the underlying array serving as character storage. The pointer is such that the ...
Definition basic_string_builder.hpp:360
auto insert(size_type index, value_type value, size_type repeat_count) -> basic_string_builder &
Inserts a specified number of copies of the string representation of a Unicode character to this inst...
Definition basic_string_builder.hpp:1120
auto insert(size_type index, double value) -> basic_string_builder &
Inserts the string representation of a specified double into this instance at the specified character...
Definition basic_string_builder.hpp:1019
auto append_line() -> basic_string_builder &
Appends the default line terminator to the end of the current xtd::text::basic_string_builder object.
Definition basic_string_builder.hpp:898
auto replace(size_type pos, size_type count, const basic_string_builder &str, size_type pos2) -> basic_string_builder &
Replaces the characters in the range [begin() + pos, begin() + std::min(pos + count,...
Definition basic_string_builder.hpp:1285
auto ensure_capacity(size_type capacity) -> size_type
Ensures that the capacity of this instance of xtd::text::basic_string_builder is at least the specifi...
Definition basic_string_builder.hpp:946
auto operator[](xtd::usize index) const -> const_reference
Returns a reference to the character at specified location index.
Definition basic_string_builder.hpp:1417
auto append_line(const xtd::basic_string< char_t > &value) -> basic_string_builder &
Appends a copy of the specified string followed by the default line terminator to the end of the curr...
Definition basic_string_builder.hpp:906
friend auto operator<<(std::ostream &stream, const basic_string_builder &str) -> std::ostream &
Output stream operator. Behaves as a FormattedOutputFunction. After constructing and checking the sen...
Definition basic_string_builder.hpp:1725
auto insert(size_type index, xtd::decimal value) -> basic_string_builder &
Inserts the string representation of a specified 8decimal into this instance at the specified charact...
Definition basic_string_builder.hpp:1009
typename base_type::reference reference
Represents the basic string referecne type.
Definition basic_string_builder.hpp:52
auto append(xtd::boolean value) -> basic_string_builder &
Appends the string representation of a specified boolean value to this instance.
Definition basic_string_builder.hpp:477
basic_string_builder(const_pointer str, xtd::usize count)
Initializes a new instance of xtd::text::basic_string_builder with specified substring and count char...
Definition basic_string_builder.hpp:255
auto insert(size_type index, xtd::uint64 value) -> basic_string_builder &
Inserts the string representation of a specified 64-bit unsigned integer into this instance at the sp...
Definition basic_string_builder.hpp:1099
auto chars() noexcept -> base_type &
Returns a reference to the underlying base type.
Definition basic_string_builder.hpp:339
auto append(xtd::single value) -> basic_string_builder &
Appends the string representation of a specified single value to this instance.
Definition basic_string_builder.hpp:554
auto data() const noexcept -> const_pointer
Returns a pointer to the underlying array serving as character storage. The pointer is such that the ...
Definition basic_string_builder.hpp:352
basic_string_builder(basic_string_builder &&str) noexcept
Initializes a new instance of xtd::text::basic_string_builder with specified string to move.
Definition basic_string_builder.hpp:213
auto append(xtd::uint64 value) -> basic_string_builder &
Appends the string representation of a specified 64-bit unsigned integer value to this instance.
Definition basic_string_builder.hpp:688
auto append(const xtd::basic_string< char_t > &value) -> basic_string_builder &
Appends a copy of the specified string to this instance.
Definition basic_string_builder.hpp:426
typename base_type::pointer pointer
Represents the basic string pointer type.
Definition basic_string_builder.hpp:56
auto insert(size_type index, xtd::int16 value) -> basic_string_builder &
Inserts the string representation of a specified 16-bit signed integer into this instance at the spec...
Definition basic_string_builder.hpp:1039
auto append(const_pointer s, size_type count) -> basic_string_builder &
Appends additional characters to the string.
Definition basic_string_builder.hpp:809
auto append(xtd::uint16 value) -> basic_string_builder &
Appends the string representation of a specified 16-bit unsigned integer value to this instance.
Definition basic_string_builder.hpp:650
typename base_type::iterator iterator
Represents the basic string iterator type.
Definition basic_string_builder.hpp:61
auto append_format(const xtd::basic_string< char_t > &format, args_t &&... args) -> basic_string_builder &
Appends the string returned by processing a composite format string, which contains zero or more form...
Definition basic_string_builder.hpp:862
auto length(size_type value) noexcept -> basic_string_builder &
Sets or sets the length of the current xtd::text::basic_string_builder object.
Definition basic_string_builder.hpp:390
auto capacity(size_type value) -> basic_string_builder &
Sets the number of characters that the string has currently allocated space for.
Definition basic_string_builder.hpp:323
basic_string_builder(value_type character, xtd::usize count, const allocator_type &allocator)
Initializes a new instance of xtd::text::basic_string_builder with specified count copies of characte...
Definition basic_string_builder.hpp:237
auto append(const basic_string_builder &str, size_type pos) -> basic_string_builder &
Appends additional characters to the string.
Definition basic_string_builder.hpp:780
basic_string_builder(const basic_string_builder &str) noexcept
Initializes a new instance of xtd::text::basic_string_builder with specified string to copy.
Definition basic_string_builder.hpp:167
auto cend() const -> const_iterator
Returns an iterator to the character following the last character of the string. This character acts ...
Definition basic_string_builder.hpp:343
basic_string_builder(const_pointer str)
Initializes a new instance of xtd::text::basic_string_builder with specified string to copy.
Definition basic_string_builder.hpp:241
basic_string_builder(const allocator_type &allocator) noexcept
Initializes a new instance of xtd::text::basic_string_builder with specified allocator.
Definition basic_string_builder.hpp:163
auto empty() const noexcept -> bool
Checks if the string has no characters, i.e. whether begin() == end().
Definition basic_string_builder.hpp:364
basic_string_builder(input_iterator_t first, input_iterator_t last, const allocator_type &allocator)
Initializes a new instance of xtd::text::basic_string_builder with specified first and last iterators...
Definition basic_string_builder.hpp:286
basic_string_builder(std::initializer_list< value_type > il)
Initializes a new instance of xtd::text::basic_string_builder with specified initializer list.
Definition basic_string_builder.hpp:290
auto insert(size_type index, xtd::byte value) -> basic_string_builder &
Inserts the string representation of a specified 8-bit unsigned integer into this instance at the spe...
Definition basic_string_builder.hpp:999
auto insert(size_type index, const_pointer s, size_type count) -> basic_string_builder &
Inserts characters into the string.
Definition basic_string_builder.hpp:1166
auto equals(const object &obj) const noexcept -> bool override
Determines whether this instance and a specified object, which must also be a xtd::text::basic_string...
Definition basic_string_builder.hpp:934
auto size() const noexcept -> size_type
Returns the number of char_t elements in the string, i.e. std::distance(begin(), end()).
Definition basic_string_builder.hpp:401
auto insert(size_type index, xtd::sbyte value) -> basic_string_builder &
Inserts the string representation of a specified 8-bit signed integer into this instance at the speci...
Definition basic_string_builder.hpp:1069
auto insert(size_type index, const xtd::basic_string< char_t > &value) -> basic_string_builder &
Inserts a string into this instance at the specified character position.
Definition basic_string_builder.hpp:968
basic_string_builder(const basic_string_builder &str, xtd::usize index, xtd::usize count)
Initializes a new instance of xtd::text::basic_string_builder with specified substring at index and c...
Definition basic_string_builder.hpp:196
auto append(xtd::byte value) -> basic_string_builder &
Appends the string representation of a specified 8-bit unsigned value to this instance.
Definition basic_string_builder.hpp:497
auto append(value_type value) -> basic_string_builder &
Appends the string representation of a specified xtd::text::basic_string_builder::value_type value to...
Definition basic_string_builder.hpp:711
auto operator+=(const basic_string_builder &str) -> basic_string_builder &
Addition assignment operator. Appends additional characters to the string.
Definition basic_string_builder.hpp:1569
std::basic_string< char_t, traits_t, allocator_t > base_type
Represents the basic string base type.
Definition basic_string_builder.hpp:40
auto append(xtd::int32 value) -> basic_string_builder &
Appends the string representation of a specified 32-bit signed integer value to this instance.
Definition basic_string_builder.hpp:592
friend auto operator+(const basic_string_builder &lhs, const basic_string_builder &rhs) -> basic_string_builder
Addition operator. Returns a string containing characters from lhs followed by the characters from rh...
Definition basic_string_builder.hpp:1604
auto remove(size_type start_index, size_type length) -> basic_string_builder &
Inserts characters into the string.
Definition basic_string_builder.hpp:1205
auto replace(value_type old_char, value_type new_char) noexcept -> basic_string_builder &
Replaces all occurrences of a specified character in this instance with another specified character.
Definition basic_string_builder.hpp:1212
basic_string_builder(value_type character, xtd::usize count)
Initializes a new instance of xtd::text::basic_string_builder with specified count copies of characte...
Definition basic_string_builder.hpp:232
auto cbegin() const -> const_iterator
Returns an iterator to the first character of the string.
Definition basic_string_builder.hpp:331
auto insert(size_type index, const basic_string_builder &str) -> basic_string_builder &
Inserts characters into the string.
Definition basic_string_builder.hpp:1173
basic_string_builder(std::initializer_list< value_type > il, const allocator_type &allocator)
Initializes a new instance of xtd::text::basic_string_builder with specified initializer list and all...
Definition basic_string_builder.hpp:295
basic_string_builder(xtd::usize count, value_type character, const allocator_type &allocator)
Initializes a new instance of xtd::text::basic_string_builder with specified count copies of characte...
Definition basic_string_builder.hpp:227
auto clear() -> basic_string_builder &
Removes all characters from the current xtd::text::basic_string_builder instance.
Definition basic_string_builder.hpp:912
auto insert(size_type index, object_t value) -> basic_string_builder &
Inserts the string representation of a specified object into this instance at the specified character...
Definition basic_string_builder.hpp:1138
typename base_type::const_reverse_iterator const_reverse_iterator
Represents the basic string const reverse iterator type.
Definition basic_string_builder.hpp:68
auto operator=(const basic_string_builder &str) noexcept -> basic_string_builder &
Copy assignment operator. Replaces the contents with a copy of the contents of str.
Definition basic_string_builder.hpp:1495
auto append(const_pointer s) -> basic_string_builder &
Appends additional characters to the string.
Definition basic_string_builder.hpp:818
typename base_type::const_iterator const_iterator
Represents the basic string const iterator type.
Definition basic_string_builder.hpp:64
auto begin() const -> const_iterator
Returns an iterator to the first character of the string.
Definition basic_string_builder.hpp:303
auto append(const basic_string_builder &str, size_type pos, size_type count) -> basic_string_builder &
Appends additional characters to the string.
Definition basic_string_builder.hpp:793
basic_string_builder(xtd::usize count, value_type character)
Definition basic_string_builder.hpp:222
typename base_type::allocator_type allocator_type
Represents the basic string allocator type.
Definition basic_string_builder.hpp:46
typename base_type::reverse_iterator reverse_iterator
Represents the basic string reverse iterator type.
Definition basic_string_builder.hpp:66
auto equals(const basic_string_builder &value) const noexcept -> bool override
Determines whether this instance and another specified xtd::text::basic_string_builder object have th...
Definition basic_string_builder.hpp:939
basic_string_builder(const_pointer str, const allocator_type &allocator)
Initializes a new instance of xtd::text::basic_string_builder with specified string to copy,...
Definition basic_string_builder.hpp:248
auto replace(size_type pos, size_type count, const_pointer cstr) -> basic_string_builder &
Replaces the characters in the range [begin() + pos, begin() + std::min(pos + count,...
Definition basic_string_builder.hpp:1336
friend auto operator>>(std::istream &stream, basic_string_builder &str) -> std::istream &
Input stream operator. Behaves as a FormattedInputFunction. After constructing and checking the sentr...
Definition basic_string_builder.hpp:1742
basic_string_builder(const basic_string_builder &str, const allocator_type &allocator) noexcept
Initializes a new instance of xtd::text::basic_string_builder with specified string to copy and alloc...
Definition basic_string_builder.hpp:171
auto length() const noexcept -> size_type
Definition basic_string_builder.hpp:380
auto insert(size_type index, xtd::boolean value) -> basic_string_builder &
Inserts the string representation of a boolean value into this instance at the specified character po...
Definition basic_string_builder.hpp:989
typename base_type::value_type value_type
Represents the basic string value type.
Definition basic_string_builder.hpp:44
auto insert(size_type index, size_type count, value_type ch) -> basic_string_builder &
Inserts characters into the string.
Definition basic_string_builder.hpp:1146
auto replace(size_type pos, size_type count, const_pointer cstr, size_type count2) -> basic_string_builder &
Replaces the characters in the range [begin() + pos, begin() + std::min(pos + count,...
Definition basic_string_builder.hpp:1312
auto append(value_type value, size_type repeat_count) -> basic_string_builder &
Appends a specified number of copies of the string representation of a Unicode character to this inst...
Definition basic_string_builder.hpp:731
Definition character.hpp:17
Contains xtd::environment class.
static auto format(const basic_string< char > &fmt, args_t &&... args) -> basic_string
Writes the text representation of the specified arguments list, to string using the specified format ...
auto format(const xtd::string &fmt, args_t &&... args) -> xtd::string
Writes the text representation of the specified arguments list, to string using the specified format ...
Definition format.hpp:21
@ index_out_of_range
The index is out of range.
Definition exception_case.hpp:61
@ argument_out_of_range
The argument is out of range.
Definition exception_case.hpp:35
@ null_pointer
The pointer is null.
Definition exception_case.hpp:79
#define self_
The self_ expression is a reference value expression whose value is the reference of the implicit obj...
Definition self.hpp:20
std::basic_string_view< char_t, traits_t > basic_string_view
Represents an object that can refer to a constant contiguous sequence of char_t with the first elemen...
Definition basic_string_view.hpp:16
xtd::basic_string< char > string
Represents text as a sequence of UTF-8 code units.
Definition __string_definitions.hpp:43
std::basic_string_view< char_t, traits_t > basic_read_only_string_view
Represents an object that can refer to a constant contiguous sequence of char_t with the first elemen...
Definition basic_read_only_string_view.hpp:16
std::int64_t int64
Represents a 64-bit signed integer.
Definition int64.hpp:23
std::uint32_t uint32
Represents a 32-bit unsigned integer.
Definition uint32.hpp:23
__slong__ slong
Represents a 32-bit or 64-bit signed integer.
Definition slong.hpp:27
null_ptr null
Represents a null pointer value.
std::int8_t sbyte
Represents a 8-bit signed integer.
Definition sbyte.hpp:23
bool boolean
Represents a boolean.
Definition boolean.hpp:23
__ulong__ ulong
Represents a 32-bit or 64-bit unsigned integer.
Definition ulong.hpp:27
long double decimal
Represents a decimal-precision floating-point number.
Definition decimal.hpp:23
std::uint16_t uint16
Represents a 16-bit unsigned integer.
Definition uint16.hpp:23
std::int32_t int32
Represents a 32-bit signed integer.
Definition int32.hpp:25
std::int16_t int16
Represents a 16-bit signed integer.
Definition int16.hpp:23
std::uint64_t uint64
Represents a 64-bit unsigned integer.
Definition uint64.hpp:23
std::size_t usize
Represents an unsigned size of any object in bytes.
Definition usize.hpp:22
std::uint8_t byte
Represents a 8-bit unsigned integer.
Definition byte.hpp:23
float single
Represents a single-precision floating-point number.
Definition single.hpp:23
@ s
The S key.
Definition console_key.hpp:124
@ separator
The Separator key.
Definition console_key.hpp:172
Contains classes that represent ASCII and Unicode character encodings; abstract base classes for conv...
Definition basic_string_builder.hpp:14
The xtd namespace contains all fundamental classes to access Hardware, Os, System,...
Definition abstract_object.hpp:8
auto first() const -> read_only_span< type_t, count >
Obtains a subspan consisting of the first count elements of the sequence.
Definition read_only_span.hpp:245
xtd::usize size_type
Represents the read_only_span size type (usually xtd::usize).
Definition read_only_span.hpp:65
auto last() const -> read_only_span< type_t, count >
Obtains a subspan consisting of the last N elements of the sequence.
Definition read_only_span.hpp:286
constexpr auto length() const noexcept -> size_type
Returns the length of the current read_only_span.
Definition read_only_span.hpp:209
const type_t * const_pointer
Represents the read_only_span const pointer type.
Definition read_only_span.hpp:71
constexpr auto size() const noexcept -> size_type
Returns the number of elements.
Definition read_only_span.hpp:213
Contains xtd numeric literals.
Contains xtd::range class.
Represents a type that can be used to index a collection either from the beginning or the end.
Definition index.hpp:38
auto get_offset(value_type length) const noexcept -> xtd::usize
Calculates the offset from the start of the collection using the specified collection length.
Represents a value_type struct.
Definition value_type.hpp:34