std::basic_string
ÐпÑеделено в заголовоÑном Ñайле <string>
|
||
template< class CharT, |
(1) | |
namespace pmr { template <class CharT, class Traits = std::char_traits<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[0]
Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¿ÐµÑедан ÑÑнкÑиÑм, коÑоÑÑе ожидаÑÑ ÑказаÑÐµÐ»Ñ Ð½Ð° пеÑвÑй ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð¼Ð°ÑÑива CharT[]
Ñ Ð·Ð°Ð²ÐµÑÑаÑÑим нÑлÑм (наÑÐ¸Ð½Ð°Ñ Ñ C++11).
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 ÑÑнкÑиÑ-ÑлеменÑ) | |
возвÑаÑÐ°ÐµÑ ÑвÑзаннÑй аллокаÑÐ¾Ñ (public ÑÑнкÑиÑ-ÑлеменÑ) | |
ÐоÑÑÑп к ÑлеменÑам | |
обÑаÑаеÑÑÑ Ðº ÑÐºÐ°Ð·Ð°Ð½Ð½Ð¾Ð¼Ñ ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ Ñ Ð¿ÑовеÑкой гÑÐ°Ð½Ð¸Ñ (public ÑÑнкÑиÑ-ÑлеменÑ) | |
полÑÑÐ°ÐµÑ Ð´Ð¾ÑÑÑп к ÑÐºÐ°Ð·Ð°Ð½Ð½Ð¾Ð¼Ñ ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ (public ÑÑнкÑиÑ-ÑлеменÑ) | |
(C++11) |
обÑаÑаеÑÑÑ Ðº пеÑÐ²Ð¾Ð¼Ñ ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ (public ÑÑнкÑиÑ-ÑлеменÑ) |
(C++11) |
полÑÑÐ°ÐµÑ Ð´Ð¾ÑÑÑп к поÑÐ»ÐµÐ´Ð½ÐµÐ¼Ñ ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ (public ÑÑнкÑиÑ-ÑлеменÑ) |
возвÑаÑÐ°ÐµÑ ÑказаÑÐµÐ»Ñ Ð½Ð° пеÑвÑй Ñимвол ÑÑÑоки (public ÑÑнкÑиÑ-ÑлеменÑ) | |
возвÑаÑÐ°ÐµÑ Ð½ÐµÐ¼Ð¾Ð´Ð¸ÑиÑиÑÑемÑÑ ÑÑандаÑÑнÑÑ Ð²ÐµÑÑÐ¸Ñ Ð¼Ð°ÑÑива Ñимволов C ÑÑÑоки (public ÑÑнкÑиÑ-ÑлеменÑ) | |
(C++17) |
возвÑаÑÐ°ÐµÑ Ð½ÐµÐ¸Ð·Ð¼ÐµÐ½ÑемÑй string_view вÑей ÑÑÑоки (public ÑÑнкÑиÑ-ÑлеменÑ) |
ÐÑеÑаÑоÑÑ | |
(C++11) |
возвÑаÑÐ°ÐµÑ Ð¸ÑеÑаÑÐ¾Ñ Ð½Ð° наÑало (public ÑÑнкÑиÑ-ÑлеменÑ) |
(C++11) |
возвÑаÑÐ°ÐµÑ Ð¸ÑеÑаÑÐ¾Ñ Ð½Ð° ÐºÐ¾Ð½ÐµÑ (public ÑÑнкÑиÑ-ÑлеменÑ) |
(C++11) |
возвÑаÑÐ°ÐµÑ Ð¾Ð±ÑаÑнÑй иÑеÑаÑÐ¾Ñ Ð½Ð° наÑало (public ÑÑнкÑиÑ-ÑлеменÑ) |
(C++11) |
возвÑаÑÐ°ÐµÑ Ð¾Ð±ÑаÑнÑй иÑеÑаÑÐ¾Ñ Ð½Ð° ÐºÐ¾Ð½ÐµÑ (public ÑÑнкÑиÑ-ÑлеменÑ) |
ÐмеÑÑимоÑÑÑ | |
пÑовеÑÑеÑ, пÑÑÑа ли ÑÑÑока (public ÑÑнкÑиÑ-ÑлеменÑ) | |
возвÑаÑÐ°ÐµÑ ÐºÐ¾Ð»Ð¸ÑеÑÑво Ñимволов (public ÑÑнкÑиÑ-ÑлеменÑ) | |
возвÑаÑÐ°ÐµÑ Ð¼Ð°ÐºÑималÑное колиÑеÑÑво Ñимволов (public ÑÑнкÑиÑ-ÑлеменÑ) | |
ÑезеÑвиÑÑÐµÑ Ð¿Ð°Ð¼ÑÑÑ (public ÑÑнкÑиÑ-ÑлеменÑ) | |
возвÑаÑÐ°ÐµÑ ÐºÐ¾Ð»Ð¸ÑеÑÑво Ñимволов, коÑоÑÑе могÑÑ Ñ
ÑаниÑÑÑÑ Ð² вÑделенной в даннÑй Ð¼Ð¾Ð¼ÐµÐ½Ñ Ð¿Ð°Ð¼ÑÑи (public ÑÑнкÑиÑ-ÑлеменÑ) | |
(C++11) |
ÑменÑÑÐ°ÐµÑ Ð¸ÑполÑзование памÑÑи за ÑÑÑÑ Ð¾ÑÐ²Ð¾Ð±Ð¾Ð¶Ð´ÐµÐ½Ð¸Ñ Ð½ÐµÐ¸ÑполÑзÑемой памÑÑи (public ÑÑнкÑиÑ-ÑлеменÑ) |
ÐпеÑаÑии | |
оÑиÑÐ°ÐµÑ ÑодеÑжимое (public ÑÑнкÑиÑ-ÑлеменÑ) | |
вÑÑавлÑÐµÑ ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ (public ÑÑнкÑиÑ-ÑлеменÑ) | |
ÑдалÑÐµÑ ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ (public ÑÑнкÑиÑ-ÑлеменÑ) | |
добавлÑÐµÑ Ñимвол в ÐºÐ¾Ð½ÐµÑ (public ÑÑнкÑиÑ-ÑлеменÑ) | |
(C++11) |
ÑдалÑÐµÑ Ð¿Ð¾Ñледний Ñимвол (public ÑÑнкÑиÑ-ÑлеменÑ) |
добавлÑÐµÑ ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ Ð² ÐºÐ¾Ð½ÐµÑ (public ÑÑнкÑиÑ-ÑлеменÑ) | |
добавлÑÐµÑ ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ Ð² ÐºÐ¾Ð½ÐµÑ (public ÑÑнкÑиÑ-ÑлеменÑ) | |
ÑÑÐ°Ð²Ð½Ð¸Ð²Ð°ÐµÑ Ð´Ð²Ðµ ÑÑÑоки (public ÑÑнкÑиÑ-ÑлеменÑ) | |
(C++20) |
пÑовеÑÑеÑ, наÑинаеÑÑÑ Ð»Ð¸ ÑÑÑока Ñ Ð·Ð°Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ пÑеÑикÑа (public ÑÑнкÑиÑ-ÑлеменÑ) |
(C++20) |
пÑовеÑÑеÑ, заканÑиваеÑÑÑ Ð»Ð¸ ÑÑÑока заданнÑм ÑÑÑÑикÑом (public ÑÑнкÑиÑ-ÑлеменÑ) |
(C++23) |
пÑовеÑÑеÑ, ÑодеÑÐ¶Ð¸Ñ Ð»Ð¸ ÑÑÑока даннÑÑ Ð¿Ð¾Ð´ÑÑÑÐ¾ÐºÑ Ð¸Ð»Ð¸ Ñимвол (public ÑÑнкÑиÑ-ÑлеменÑ) |
заменÑÐµÑ ÑказаннÑÑ ÑаÑÑÑ ÑÑÑоки (public ÑÑнкÑиÑ-ÑлеменÑ) | |
возвÑаÑÐ°ÐµÑ Ð¿Ð¾Ð´ÑÑÑÐ¾ÐºÑ (public ÑÑнкÑиÑ-ÑлеменÑ) | |
копиÑÑÐµÑ ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ (public ÑÑнкÑиÑ-ÑлеменÑ) | |
изменÑÐµÑ ÐºÐ¾Ð»Ð¸ÑеÑÑво ÑоÑ
ÑанÑннÑÑ
Ñимволов (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, ÑÑÐ¾Ð±Ñ ÑооÑвеÑÑÑвоваÑÑ ÑÑÑеÑÑвÑÑÑей пÑакÑике.
[пÑавиÑÑ] ÐÑимеÑ
#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++17) |
ÑÑÑоковое пÑедÑÑавление ÑолÑко Ð´Ð»Ñ ÑÑÐµÐ½Ð¸Ñ (Ñаблон клаÑÑа) |