Strings library
Characters
In the C++ standard library, a character is an object which, when treated sequentially, can represent text.
The term means not only objects of character types , but also any value that can be represented by a type that provides the definitions specified in the strings library and following libraries:
(since C++11) |
In the strings library and regular expressions library (since C++11) , a character can be of only char-like types , i.e. those non-array types that satisfy the requirements of PODType (until C++20) TrivialType and StandardLayoutType (since C++20) (until C++26) TriviallyCopyable and StandardLayoutType (since C++26) .
For any char-like type
|
(since C++26) |
Therefore, characters are also referred as char-like objects in the strings library and regular expressions library (since C++11) .
Some standard library components accept character container types . They, too, are types used to represent individual characters. Such types are used for one of the template arguments of std::char_traits and the class templates which use std::char_traits .
Library components
The C++ strings library includes the following components:
Character traits
Many character-related class templates (such as
std::basic_string
) need a set of related types and functions to complete the definition of their semantics. These types and functions are provided as a set of member
typedef
names and functions in the template parameter
Traits
used by each such template. The classes which are able to complete those semantics are
CharTraits
.
The string library provides the 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, all of them satisfy the CharTraits requirements:
Defined in header
<string>
|
||
template
<>
class
char_traits
<
char
>
;
|
||
template
<>
class
char_traits
<
wchar_t
>
;
|
||
template
<>
class
char_traits
<
char8_t
>
;
|
(since C++20) | |
template
<>
class
char_traits
<
char16_t
>
;
|
(since C++11) | |
template
<>
class
char_traits
<
char32_t
>
;
|
(since C++11) | |
When a user-defined character container type for std::basic_string and std::basic_string_view (since C++17) is used, it is also necessary to provide a corresponding character trait class (which can be a specialization of std::char_traits ).
String classes ( std::string etc.)
The class template 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 > |
String view classes ( std::string_view etc.)The class template 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:
|
(since C++17) |
Null-terminated sequence utilities
Null-terminated character sequences (NTCTS) are sequences of characters that are terminated by a null character (the value after value-initialization ).
The strings library provides functions to create, inspect, and modify such sequences:
- null-terminated byte strings (NTBS) helper functions (including support of wide character types ),
- null-terminated multibyte strings (NTMBS) helper functions.
Relevant libraries
The localization library provides support for string conversions (e.g. std::toupper ), character classification functions (e.g. std::isspace ), and text encoding recognition ( std::text_encoding ).
Defect reports
The following behavior-changing defect reports were applied retroactively to previously published C++ standards.
DR | Applied to | Behavior as published | Correct behavior |
---|---|---|---|
LWG 1170 | C++98 | char-like types could be array types | prohibited |
See also
C documentation
for
Strings library
|