Namespaces
Variants
Views
Actions

Difference between revisions of "cpp/string"

From cppreference.com
< cpp
(char8_t)
(move {{mark since foo}} to the first cells of {{dsc}}, to help gadget-StandardRevisions)
Line 19: Line 19:
 
{{dsc | {{lc|std::string}} | {{c|std::basic_string<char>}}}}
 
{{dsc | {{lc|std::string}} | {{c|std::basic_string<char>}}}}
 
{{dsc | {{lc|std::wstring}} | {{c|std::basic_string<wchar_t>}}}}
 
{{dsc | {{lc|std::wstring}} | {{c|std::basic_string<wchar_t>}}}}
{{dsc | {{lc|std::u8string}} | {{c|std::basic_string<char8_t>}} {{mark since c++20}}}}
+
{{dsc | {{lc|std::u8string}} {{mark since c++20}} | {{c|std::basic_string<char8_t>}}}}
{{dsc | {{lc|std::u16string}} | {{c|std::basic_string<char16_t>}} {{mark since c++11}}}}
+
{{dsc | {{lc|std::u16string}} {{mark since c++11}} | {{c|std::basic_string<char16_t>}}}}
{{dsc | {{lc|std::u32string}} | {{c|std::basic_string<char32_t>}} {{mark since c++11}}}}
+
{{dsc | {{lc|std::u32string}} {{mark since c++11}} | {{c|std::basic_string<char32_t>}}}}
 
{{dsc end}}
 
{{dsc end}}
  
Line 34: Line 34:
 
{{dsc header | string}}
 
{{dsc header | string}}
 
{{dsc hitem | Type | Definition}}
 
{{dsc hitem | Type | Definition}}
{{dsc | {{lc|std::string_view}} | {{c|std::basic_string_view<char>}} {{mark since c++17}}}}
+
{{dsc | {{lc|std::string_view}} {{mark since c++17}} | {{c|std::basic_string_view<char>}}}}
{{dsc | {{lc|std::wstring_view}} | {{c|std::basic_string_view<wchar_t>}} {{mark since c++17}}}}
+
{{dsc | {{lc|std::wstring_view}} {{mark since c++17}} | {{c|std::basic_string_view<wchar_t>}}}}
{{dsc | {{lc|std::u8string_view}} | {{c|std::basic_string_view<char8_t>}} {{mark since c++20}}}}
+
{{dsc | {{lc|std::u8string_view}} {{mark since c++20}} | {{c|std::basic_string_view<char8_t>}}}}
{{dsc | {{lc|std::u16string_view}} | {{c|std::basic_string_view<char16_t>}} {{mark since c++17}}}}
+
{{dsc | {{lc|std::u16string_view}} {{mark since c++17}} | {{c|std::basic_string_view<char16_t>}}}}
{{dsc | {{lc|std::u32string_view}} | {{c|std::basic_string_view<char32_t>}} {{mark since c++17}}}}
+
{{dsc | {{lc|std::u32string_view}} {{mark since c++17}} | {{c|std::basic_string_view<char32_t>}}}}
 
{{dsc end}}
 
{{dsc end}}
 
}}
 
}}

Revision as of 09:45, 4 March 2019

The C++ strings library includes support for three general types of strings:

  • std::basic_string - a templated class designed to manipulate strings of any character type.
  • std::basic_string_view (C++17) - a lightweight non-owning read-only view into a subsequence of a string.
  • Null-terminated strings - arrays of characters terminated by a special null character.

Contents

std::basic_string

The templated class std::basic_string generalizes how sequences of characters are manipulated and stored. String creation, manipulation, and destruction are all handled by a convenient set of class methods and related functions.

Several specializations of std::basic_string are provided for commonly-used types:

Defined in header <string>
Type Definition
std::string std::basic_string<char>
std::wstring std::basic_string<wchar_t>
std::u8string (since C++20) std::basic_string<char8_t>
std::u16string (since C++11) std::basic_string<char16_t>
std::u32string (since C++11) std::basic_string<char32_t>

std::basic_string_view

The templated class std::basic_string_view provides a lightweight object that offers read-only access to a string or a part of a string using an interface similar to the interface of std::basic_string.

Several specializations of std::basic_string_view are provided for commonly-used types:

Defined in header <string>
Type Definition
std::string_view (since C++17) std::basic_string_view<char>
std::wstring_view (since C++17) std::basic_string_view<wchar_t>
std::u8string_view (since C++20) std::basic_string_view<char8_t>
std::u16string_view (since C++17) std::basic_string_view<char16_t>
std::u32string_view (since C++17) std::basic_string_view<char32_t>
(since C++17)

Null-terminated strings

Null-terminated strings are arrays of characters that are terminated by a special null character. C++ provides functions to create, inspect, and modify null-terminated strings.

There are three types of null-terminated strings:

Additional support

std::char_traits

The string library also provides class template std::char_traits that defines types and functions for std::basic_string and std::basic_string_view(since C++17). The following specializations are defined:

Defined in header <string>
template<> class char_traits<char>;

template<> class char_traits<wchar_t>;
template<> class char_traits<char8_t>;
template<> class char_traits<char16_t>;

template<> class char_traits<char32_t>;


(since C++20)
(since C++11)
(since C++11)

Conversions and classification

The localizations library provides support for string conversions (e.g. std::wstring_convert or std::toupper) as well as functions that classify characters (e.g. std::isspace or std::isdigit).

See also

C++ documentation for Localizations library
C documentation for Strings library