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<CharT,Traits>::basic_string_view
std::basic_string_view<CharT,Traits>::basic_string_view
| constexpr basic_string_view() noexcept; |
(1) | (C++17 èµ·) |
| constexpr basic_string_view(const basic_string_view& other) noexcept = default; |
(2) | (C++17 èµ·) |
| constexpr basic_string_view(const CharT* s, size_type count); |
(3) | (C++17 èµ·) |
| constexpr basic_string_view(const CharT* s); |
(4) | (C++17 èµ·) |
| template<class It, class End> constexpr basic_string_view(It first, End last); |
(5) | (C++20 èµ·) |
1) é»è®¤æé 彿°ãæé 空ç
basic_string_view ãæé åï¼ data() çäº nullptr ï¼è size() çäº 0 ã2) å¤å¶æé 彿°ãæé å
容å
other çè§å¾ãæé åï¼ data() çäº other.data() ï¼è size() çäº other.size() ã3) æé å§äº
s ææåå
ç´ çå符æ°ç»çé¦ count 个å符çè§å¾ã s å¯å
å«ç©ºå符ãè¥ [s, s+count) 䏿¯åæ³èå´ï¼åè¡ä¸ºæªå®ä¹ï¼å°½ç®¡æé 彿°å¯è½ä¸è®¿é®æ¤èå´çä»»ä½å
ç´ ï¼ãæé åï¼ data() çäº s ï¼è size() çäº count ã4) æé ä¸ä¸ª
s ææåçç©ºç»æ¢å符串çè§å¾ï¼ä¸å
å«ç»æ¢ç©ºå符ãè§å¾çé¿åº¦å¦å以 Traits::length(s) ç¡®å®ãè¥ [s, s+Traits::length(s)) 䏿¯åæ³èå´ï¼åè¡ä¸ºæªå®ä¹ãæé åï¼ data() çäº s ï¼è size() çäº Traits::length(s) ã5) æé èå´
[first, last) ä¸ç basic_string_view ãè¥ [first, last) 䏿¯åæ³èå´ãè¥ It ä¸å®é
å®ç° contiguous_iterator æè¥ End ä¸å®é
å®ç° It ç sized_sentinel_for åè¡ä¸ºæªå®ä¹ãæé å data() çäº std::to_address(first) è size() çäº last - first ã
æ¤éè½½ä» è¥
-
It满足 contiguous_iterator ï¼ -
End满足Itç sized_sentinel_for ï¼ - std::iter_value_t<It> ä¸
CharT为åä¸ç±»åä¸ -
Endä¸å¯è½¬æ¢å° std::size_t
-
åæ°
| other | - | ç¨ä»¥åå§åè§å¾çå¦ä¸è§å¾ |
| s | - | ç¨ä»¥åå§åè§å¾çæåå符æ°ç»æ C å符串çæé |
| count | - | è¦å å«äºè§å¾çåç¬¦æ° |
å¤æåº¦
1-3,5) 常æ°
4) ä¸
s çé¿åº¦æçº¿æ§ç¤ºä¾
è¿è¡æ¤ä»£ç
#include <iostream> #include <string> #include <string_view> int main() { std::wstring_view wcstr_v = L"xyzzy"; Â char array[3] = {'B', 'a', 'r'}; std::string_view array_v(array, std::size(array)); Â std::string cppstr = "Foo"; std::string_view cppstr_v(&cppstr[0], cppstr.size()); Â std::cout << cppstr_v << '\n' << array_v << '\n' << wcstr_v.size() << '\n'; }
è¾åºï¼
Foo Bar 5
åé
| 对è§å¾èµå¼ (å ¬å¼æå彿°) |