[string.syn] # 27 Strings library [[strings]](./#strings) ## 27.4 String classes [[string.classes]](string.classes#string.syn) ### 27.4.2 Header synopsis [string.syn] #include // see [[compare.syn]](compare.syn "17.12.1 Header synopsis")#include // see [[initializer.list.syn]](initializer.list.syn "17.11.2 Header synopsis")namespace std {// [[char.traits]](char.traits "27.2 Character traits"), character traitstemplate struct char_traits; // freestandingtemplate<> struct char_traits; // freestandingtemplate<> struct char_traits; // freestandingtemplate<> struct char_traits; // freestandingtemplate<> struct char_traits; // freestandingtemplate<> struct char_traits; // freestanding// [[basic.string]](basic.string "27.4.3 Class template basic_­string"), basic_stringtemplate, class Allocator = allocator>class basic_string; templateconstexpr basic_stringoperator+(const basic_string& lhs, const basic_string& rhs); templateconstexpr basic_stringoperator+(basic_string&& lhs, const basic_string& rhs); templateconstexpr basic_stringoperator+(const basic_string& lhs, basic_string&& rhs); templateconstexpr basic_stringoperator+(basic_string&& lhs, basic_string&& rhs); templateconstexpr basic_stringoperator+(const charT* lhs, const basic_string& rhs); templateconstexpr basic_stringoperator+(const charT* lhs, basic_string&& rhs); templateconstexpr basic_stringoperator+(charT lhs, const basic_string& rhs); templateconstexpr basic_stringoperator+(charT lhs, basic_string&& rhs); templateconstexpr basic_stringoperator+(const basic_string& lhs, const charT* rhs); templateconstexpr basic_stringoperator+(basic_string&& lhs, const charT* rhs); templateconstexpr basic_stringoperator+(const basic_string& lhs, charT rhs); templateconstexpr basic_stringoperator+(basic_string&& lhs, charT rhs); templateconstexpr basic_stringoperator+(const basic_string& lhs, type_identity_t> rhs); templateconstexpr basic_stringoperator+(basic_string&& lhs, type_identity_t> rhs); templateconstexpr basic_stringoperator+(type_identity_t> lhs, const basic_string& rhs); templateconstexpr basic_stringoperator+(type_identity_t> lhs, basic_string&& rhs); templateconstexpr booloperator==(const basic_string& lhs, const basic_string& rhs) noexcept; templateconstexpr bool operator==(const basic_string& lhs, const charT* rhs); templateconstexpr *see below* operator<=>(const basic_string& lhs, const basic_string& rhs) noexcept; templateconstexpr *see below* operator<=>(const basic_string& lhs, const charT* rhs); // [[string.special]](string.special "27.4.4.3 swap"), swaptemplateconstexpr void swap(basic_string& lhs, basic_string& rhs)noexcept(noexcept(lhs.swap(rhs))); // [[string.io]](string.io "27.4.4.4 Inserters and extractors"), inserters and extractorstemplate basic_istream&operator>>(basic_istream& is, basic_string& str); template basic_ostream&operator<<(basic_ostream& os, const basic_string& str); template basic_istream& getline(basic_istream& is, basic_string& str, charT delim); template basic_istream& getline(basic_istream&& is, basic_string& str, charT delim); template basic_istream& getline(basic_istream& is, basic_string& str); template basic_istream& getline(basic_istream&& is, basic_string& str); // [[string.erasure]](string.erasure "27.4.4.5 Erasure"), erasuretemplateconstexpr typename basic_string::size_type erase(basic_string& c, const U& value); templateconstexpr typename basic_string::size_type erase_if(basic_string& c, Predicate pred); // basic_string [*typedef-name*](dcl.typedef#nt:typedef-name "9.2.4 The typedef specifier [dcl.typedef]")*s*using [string](#lib:string "27.4.2 Header synopsis [string.syn]") = basic_string; using [u8string](#lib:u8string "27.4.2 Header synopsis [string.syn]") = basic_string; using [u16string](#lib:u16string "27.4.2 Header synopsis [string.syn]") = basic_string; using [u32string](#lib:u32string "27.4.2 Header synopsis [string.syn]") = basic_string; using [wstring](#lib:wstring "27.4.2 Header synopsis [string.syn]") = basic_string; // [[string.conversions]](string.conversions "27.4.5 Numeric conversions"), numeric conversionsint stoi(const string& str, size_t* idx = nullptr, int base = 10); long stol(const string& str, size_t* idx = nullptr, int base = 10); unsigned long stoul(const string& str, size_t* idx = nullptr, int base = 10); long long stoll(const string& str, size_t* idx = nullptr, int base = 10); unsigned long long stoull(const string& str, size_t* idx = nullptr, int base = 10); float stof(const string& str, size_t* idx = nullptr); double stod(const string& str, size_t* idx = nullptr); long double stold(const string& str, size_t* idx = nullptr); string to_string(int val); string to_string(unsigned val); string to_string(long val); string to_string(unsigned long val); string to_string(long long val); string to_string(unsigned long long val); string to_string(float val); string to_string(double val); string to_string(long double val); int stoi(const wstring& str, size_t* idx = nullptr, int base = 10); long stol(const wstring& str, size_t* idx = nullptr, int base = 10); unsigned long stoul(const wstring& str, size_t* idx = nullptr, int base = 10); long long stoll(const wstring& str, size_t* idx = nullptr, int base = 10); unsigned long long stoull(const wstring& str, size_t* idx = nullptr, int base = 10); float stof(const wstring& str, size_t* idx = nullptr); double stod(const wstring& str, size_t* idx = nullptr); long double stold(const wstring& str, size_t* idx = nullptr); wstring to_wstring(int val); wstring to_wstring(unsigned val); wstring to_wstring(long val); wstring to_wstring(unsigned long val); wstring to_wstring(long long val); wstring to_wstring(unsigned long long val); wstring to_wstring(float val); wstring to_wstring(double val); wstring to_wstring(long double val); namespace pmr {template>using basic_string = std::basic_string>; using string = basic_string; using u8string = basic_string; using u16string = basic_string; using u32string = basic_string; using wstring = basic_string; }// [[basic.string.hash]](basic.string.hash "27.4.6 Hash support"), hash supporttemplate struct hash; template struct hash, A>>; template struct hash, A>>; template struct hash, A>>; template struct hash, A>>; template struct hash, A>>; inline namespace literals {inline namespace string_literals {// [[basic.string.literals]](basic.string.literals "27.4.7 Suffix for basic_­string literals"), suffix for basic_string literalsconstexpr string operator""s(const char* str, size_t len); constexpr u8string operator""s(const char8_t* str, size_t len); constexpr u16string operator""s(const char16_t* str, size_t len); constexpr u32string operator""s(const char32_t* str, size_t len); constexpr wstring operator""s(const wchar_t* str, size_t len); }}}