C++ åèæå
- C++11
- C++14
- C++17
- C++20
- C++ ç¼è¯å¨æ¯ææ åµè¡¨
- ç¬ç«ä¸å®¿ä¸»å®ç°
- C++ è¯è¨
- C++ å ³é®è¯
- é¢å¤çå¨
- C++ æ ååºå¤´æä»¶
- å ·åè¦æ±
- åè½ç¹æ§æµè¯ (C++20)
- å·¥å ·åº
- ç±»åæ¯æï¼åºæ¬ç±»åãRTTIãç±»åç¹æ§ï¼
- æ¦å¿µåº (C++20)
- é误å¤ç
- 卿å å管ç
- æ¥æåæ¶é´å·¥å ·
- å符串åº
- std::basic_string
- std::basic_string_view
- std::basic_string_view<CharT,Traits>::operator=
- std::basic_string_view<CharT,Traits>::begin, std::basic_string_view<CharT,Traits>::cbegin
- std::basic_string_view<CharT,Traits>::end, std::basic_string_view<CharT,Traits>::cend
- std::basic_string_view<CharT,Traits>::basic_string_view
- std::basic_string_view<CharT,Traits>::copy
- std::hash (std::string_view, std::wstring_view, std::u16string_view, std::u32string_view)
- std::basic_string_view<CharT,Traits>::rbegin, std::basic_string_view<CharT,Traits>::crbegin
- std::basic_string_view<CharT,Traits>::rend, std::basic_string_view<CharT,Traits>::crend
- std::basic_string_view<CharT,Traits>::at
- std::basic_string_view<CharT,Traits>::operator[]
- std::basic_string_view<CharT,Traits>::front
- std::basic_string_view<CharT,Traits>::back
- std::basic_string_view<CharT,Traits>::data
- std::basic_string_view<CharT,Traits>::size, std::basic_string_view<CharT,Traits>::length
- std::basic_string_view<CharT,Traits>::max_size
- std::basic_string_view<CharT,Traits>::empty
- std::basic_string_view<CharT,Traits>::remove_prefix
- std::basic_string_view<CharT,Traits>::remove_suffix
- std::basic_string_view<CharT,Traits>::swap
- std::basic_string_view<CharT,Traits>::substr
- std::basic_string_view<CharT,Traits>::compare
- std::basic_string_view<CharT,Traits>::starts_with
- std::basic_string_view<CharT,Traits>::ends_with
- std::basic_string_view<CharT,Traits>::find
- std::basic_string_view<CharT,Traits>::rfind
- std::basic_string_view<CharT,Traits>::find_first_of
- std::basic_string_view<CharT,Traits>::find_last_of
- std::basic_string_view<CharT,Traits>::find_first_not_of
- std::basic_string_view<CharT,Traits>::find_last_not_of
- std::basic_string_view<CharT,Traits>::npos
- operator==,!=,<,<=,>,>=,<=>(std::basic_string_view)
- operator<<(std::basic_string_view)
- std::literals::string_view_literals::operator""sv
- std::basic_string_view çæ¨å¯¼æå¼
- ç©ºç»æ¢åèå符串
- ç©ºç»æ¢å¤åèå符串
- ç©ºç»æ¢å®½å符串
- std::char_traits
- 注é
- 容å¨åº
- è¿ä»£å¨åº
- èå´åº (C++20)
- ç®æ³åº
- æ°å¼åº
- è¾å ¥/è¾åºåº
- æä»¶ç³»ç»åº
- æ¬å°ååº
- æ£å表达å¼åº
- ååæä½åº
- çº¿ç¨æ¯æåº
- å®éªæ§ C++ ç¹æ§
- æç¨çèµæº
- ç´¢å¼
- std 符å·ç´¢å¼
- åç¨æ¯æ (C++20)
- C++ å ³é®è¯
ä½ç½®ï¼é¦é¡µ > C++ åèæå >åç¬¦ä¸²åº > std::basic_string_view
std::basic_string_view
ç±»æ¨¡æ¿ basic_string_view æè¿°ä¸ä¸ªè½æä»£å¸¸éè¿ç»ä»¿ char 对象åºåç对象ï¼åºåé¦å
ç´ å¨é¶ä½ç½®ã
å
¸åçå®ç°ä»
ä¿æäºä¸ªæåï¼æå常 CharT çæéå大å°ã
æä¾æ°ç§å¯¹å¸¸ç¨å符类åç typedef ï¼
| å®ä¹äºå¤´æä»¶
<string_view> | |
| Â | |
| ç±»å | å®ä¹ |
| std::string_view | std::basic_string_view<char> |
| std::wstring_view | std::basic_string_view<wchar_t> |
| std::u8string_view | std::basic_string_view<char8_t> (C++20) |
| std::u16string_view | std::basic_string_view<char16_t> |
| std::u32string_view | std::basic_string_view<char32_t> |
模æ¿å½¢å
| CharT | - | å符类å |
| Traits | - | æå®å符类å䏿ä½çå符ç¹å¾ (CharTraits) ç±»ãå basic_string ï¼ Traits::char_type å¿
é¡»æåå CharT çç±»åï¼å¦åç¨åºä¸ºè°¬æã
|
æåç±»å
| Â | |
| æåç±»å | å®ä¹ |
traits_type
|
Traits
|
value_type
|
CharT
|
pointer
|
CharT*
|
const_pointer
|
const CharT*
|
reference
|
CharT&
|
const_reference
|
const CharT&
|
const_iterator
|
å®ç°å®ä¹ç常éçéæºè®¿é®è¿ä»£å¨ (LegacyRandomAccessIterator) ã常é表达å¼è¿ä»£å¨ (ConstexprIterator) (C++20 èµ·)å
¼éçè¿ç»è¿ä»£å¨ (LegacyContiguousIterator) ï¼å
¶ value_type 为 CharT
|
iterator
|
const_iterator
|
const_reverse_iterator
|
std::reverse_iterator<const_iterator> |
reverse_iterator
|
const_reverse_iterator
|
size_type
|
std::size_t |
difference_type
|
std::ptrdiff_t |
æ³¨è§£ï¼ iterator ä¸ const_iterator æ¯åä¸ç±»åï¼å 为 string_view æ¯å°å¸¸å符åºåä¸çè§å¾ã
å®¹å¨ (Container) çè¿ä»£å¨ç±»åä¸çææè¦æ±äº¦åºç¨äº basic_string_view ç iterator å const_iterator ç±»åã
æå彿°
æé basic_string_view (å ¬å¼æå彿°) | |
| 对è§å¾èµå¼ (å ¬å¼æå彿°) | |
è¿ä»£å¨ | |
| è¿åæåèµ·å§ä½ç½®çè¿ä»£å¨ (å ¬å¼æå彿°) | |
| è¿åæåç»å°¾çè¿ä»£å¨ (å ¬å¼æå彿°) | |
| è¿åæåèµ·å§çååè¿ä»£å¨ (å ¬å¼æå彿°) | |
| è¿åæåç»å°¾çååè¿ä»£å¨ (å ¬å¼æå彿°) | |
å ç´ è®¿é® | |
| è®¿é®æå®å符 (å ¬å¼æå彿°) | |
| è®¿é®æå®å符ï¼å¸¦æè¾¹çæ£æ¥ (å ¬å¼æå彿°) | |
| 访é®é¦ä¸ªå符 (å ¬å¼æå彿°) | |
| è®¿é®ææ«å符 (å ¬å¼æå彿°) | |
| è¿åæåè§å¾é¦å符çæé (å ¬å¼æå彿°) | |
容é | |
| è¿ååç¬¦æ° (å ¬å¼æå彿°) | |
| è¿åæå¤§åç¬¦æ° (å ¬å¼æå彿°) | |
| æ£æ¥è§å¾æ¯å¦ä¸ºç©º (å ¬å¼æå彿°) | |
ä¿®æ¹å¨ | |
| 以åç§»èµ·ç¹æ¶ç¼©è§å¾ (å ¬å¼æå彿°) | |
| 以åç§»ç»ç¹æ¶ç¼©è§å¾ (å ¬å¼æå彿°) | |
| 交æ¢å
容 (å ¬å¼æå彿°) | |
æä½ | |
| å¤å¶å符 (å ¬å¼æå彿°) | |
| è¿åå串 (å ¬å¼æå彿°) | |
| æ¯è¾äºä¸ªè§å¾ (å ¬å¼æå彿°) | |
| (C++20) |
æ£æ¥ string_view æ¯å¦å§äºç»å®åç¼ (å ¬å¼æå彿°) |
| (C++20) |
æ£æ¥ string_view æ¯å¦ç»äºç»å®åç¼ (å ¬å¼æå彿°) |
| å¨è§å¾ä¸æ¥æ¾å符 (å ¬å¼æå彿°) | |
| 寻æ¾å串çæå䏿¬¡åºç° (å ¬å¼æå彿°) | |
| æ¥æ¾å符ç馿¬¡åºç° (å ¬å¼æå彿°) | |
| æ¥æ¾å符çæå䏿¬¡åºç° (å ¬å¼æå彿°) | |
| æ¥æ¾å符ç馿¬¡ä¸åºç° (å ¬å¼æå彿°) | |
| æ¥æ¾å符çæå䏿¬¡ä¸åºç° (å ¬å¼æå彿°) | |
常é | |
| [éæ] |
ç¹æ®å¼ãåç¡®å«ä¹ä¾èµäºè¯å¢ã (å ¬å¼éææå常é) |
éæå彿°
| (C++20 ä¸ç§»é¤)(C++20 ä¸ç§»é¤)(C++20 ä¸ç§»é¤)(C++20 ä¸ç§»é¤)(C++20 ä¸ç§»é¤)(C++20) |
以åå
¸åºæ¯è¾ä¸¤ä¸ªå符串è§å¾ (彿°æ¨¡æ¿) |
è¾å ¥/è¾åº | |
| è¿è¡å符串è§å¾çæµè¾åº (彿°æ¨¡æ¿) | |
åé¢é
| å®ä¹äºå
èå½å空é´
std::literals::string_view_literals | |
| (C++17) |
å建ä¸ä¸ªå符æ°ç»åé¢éçå符串è§å¾ (彿°) |
è¾ å©ç±»
| string_view çæ£åæ¯æ (类模æ¿ç¹å) |
è¾ å©æ¨¡æ¿
| template<class CharT, class Traits> inline constexpr bool ranges::enable_borrowed_range<std::basic_string_view<CharT, Traits>> = true; |
(C++20 èµ·) | |
std::ranges::enable_borrowed_range çæ¤ç¹åä½¿å¾ basic_string_view 满足 borrowed_range ã
| template<class CharT, class Traits> inline constexpr bool ranges::enable_view<std::basic_string_view<CharT, Traits>> = true; |
(C++20 èµ·) | |
std::ranges::enable_view çæ¤ç¹åä½¿å¾ basic_string_view 满足 view ã
æ¨å¯¼æå¼(C++20 èµ·)
注解
ç¨åºåè´è´£ç¡®ä¿ std::string_view ä¸å¨è¢«æåæ°ç»ççåæå¤ç»§ç»çåï¼
std::string_view good("a string literal"); // OK ï¼ "good" æåéææ°ç» std::string_view bad("a temporary string"s); // "bad" ä¿ææ¬åæé