std::basic_string
template< class CharT, class Traits = std::char_traits<CharT>, class Allocator = std::allocator<CharT> > class basic_string; |
(1) | |
namespace pmr { template <class CharT, class Traits = std::char_traits<CharT>> using basic_string = std::basic_string< CharT, Traits, std::pmr::polymorphic_allocator<CharT> >; } |
(2) | ( C++17) |
basic_string char- , . , . Traits - std::char_traits . Traits::char_type CharT ; .
basic_string , basic_string s, &*(s.begin() + n) == &*s.begin() + n n [0, s.size()), *(s.begin() + s.size()) CharT() ( ) ( C++11); , , s[0] , ( C++11), ( C++11) CharT.
std::basic_string AllocatorAwareContainer, SequenceContainer ContiguousContainer ( C++17)
|
- |
( C++20) |
:
<string> | |
| std::string | std::basic_string<char>
|
| std::wstring | std::basic_string<wchar_t>
|
| std::u8string (C++20) | std::basic_string<char8_t>
|
| std::u16string (C++11) | std::basic_string<char16_t>
|
| std::u32string (C++11) | std::basic_string<char32_t>
|
| std::pmr::string (C++17) | std::pmr::basic_string<char>
|
| std::pmr::wstring (C++17) | std::pmr::basic_string<wchar_t>
|
| std::pmr::u8string (C++20) | std::pmr::basic_string<char8_t>
|
| std::pmr::u16string (C++17) | std::pmr::basic_string<char16_t>
|
| std::pmr::u32string (C++17) | std::pmr::basic_string<char32_t>
|
| CharT | ||
| Traits | , | |
| Allocator | Allocator, |
traits_type
|
Traits
| ||||
value_type
|
CharT
| ||||
allocator_type
|
Allocator
| ||||
size_type
|
| ||||
difference_type
|
| ||||
reference
|
value_type&
| ||||
const_reference
|
const value_type&
| ||||
pointer
|
| ||||
const_pointer
|
| ||||
iterator
|
| ||||
const_iterator
|
| ||||
reverse_iterator
|
std::reverse_iterator<iterator>
| ||||
const_reverse_iterator
|
std::reverse_iterator<const_iterator>
| ||||
basic_string (public -) | |
| , , (public -) | |
| (public -) | |
| (public -) | |
(C++23) |
(public -) |
| (public -) | |
| (public -) | |
| (public -) | |
(DR*) |
(public -) |
(DR*) |
(public -) |
| (public -) | |
| C (public -) | |
(C++17) |
string_view (public -) |
(DR*) |
(public -) |
(DR*) |
(public -) |
(DR*) |
(public -) |
(DR*) |
(public -) |
| , (public -) | |
| (public -) | |
| (public -) | |
| (public -) | |
| , (public -) | |
(DR*) |
(public -) |
| (public -) | |
| (public -) | |
(C++23) |
(public -) |
| (public -) | |
| (public -) | |
(DR*) |
(public -) |
| (public -) | |
(C++23) |
(public -) |
| (public -) | |
| (public -) | |
(C++20) |
, (public -) |
(C++20) |
, (public -) |
(C++23) |
, (public -) |
| (public -) | |
(C++23) |
(public -) |
| (public -) | |
| (public -) | |
| (public -) | |
(C++23) |
, , , (public -) |
| (public -) | |
| (public -) | |
| (public -) | |
| (public -) | |
| (public -) | |
| (public -) | |
| (public -) | |
[static] |
. (public static -) |
,
| ( ) | |
( C++20)( C++20)( C++20)( C++20)( C++20)(C++20) |
( ) |
| std::swap ( ) | |
| , ( ) | |
/ | |
| ( ) | |
| - ( ) | |
(C++11)(C++11)(C++11) |
() |
(C++11)(C++11) |
() |
(C++11)(C++11)(C++11) |
() |
(C++11) |
string () |
(C++11) |
wstring () |
std::literals::string_literals | |
(C++14) |
basic_string () |
(C++11)(C++20)(C++11)(C++11)(C++11)(C++17)(C++20)(C++17)(C++17)(C++17) |
( ) |
( C++17)
C++23 , construct destroy std::basic_string, . P1072R10, .
__cpp_lib_string_udls |
201304L |
(C++14) | |
__cpp_lib_string_contains |
202011L |
(C++23) | contains
|
__cpp_lib_string_resize_and_overwrite |
202110L |
(C++23) | resize_and_overwrite
|
__cpp_lib_containers_ranges |
202202L |
(C++23) | - , , no section name |
#include <iostream>
#include <string>
int main()
{
using namespace std::literals;
// const char*
std::string str1 = "";
//
auto str2 = ""s;
//
std::string str3 = str1 + " " + str2;
//
std::cout << str3 << '\n';
std::string::size_type pos = str3.find(" ");
str1 = str3.substr(pos + 1); //
str2 = str3.substr(0, pos); //
std::cout << str1 << ' ' << str2 << '\n';
// operator[]
std::cout << str1[0] << '\n';
str1[0] = '';
std::cout << str1 << '\n';
}
:
C++:
| LWG 530 | C++98 | basic_string
|
(C++17) |
( ) |