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.
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
|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>|
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:
 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
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
template<> class char_traits<char>;
template<> class char_traits<wchar_t>;
 Conversions and classification
 See also
C++ documentation for Localizations library
C documentation for Strings library