Namespaces
Variants
Views
Actions

Difference between revisions of "cpp/string"

From cppreference.com
< cpp
(use lc)
(char_traits specializations are on character types, not string types)
Line 41: Line 41:
 
{{dcl header | string}}
 
{{dcl header | string}}
 
{{dcl | notes=<br><br>{{mark since c++11}}<br>{{mark since c++11}} |
 
{{dcl | notes=<br><br>{{mark since c++11}}<br>{{mark since c++11}} |
template<> class char_traits<std::string>;
+
template<> class char_traits<char>;
template<> class char_traits<std::wstring>;
+
template<> class char_traits<wchar_t>;
template<> class char_traits<std::u16string>;
+
template<> class char_traits<char16_t>;
template<> class char_traits<std::u32string>;
+
template<> class char_traits<char32_t>;
 
}}
 
}}
 
{{dcl end}}
 
{{dcl end}}

Revision as of 07:47, 7 February 2014

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

  • std::basic_string - a templated class designed to manipulate strings of any character type.
  • 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::u16string std::basic_string<char16_t>
std::u32string std::basic_string<char32_t>

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. The following specializations are defined:

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

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

template<> class char_traits<char32_t>;


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