- string[meta header]
- std::string_literals[meta namespace]
- function[meta id-type]
- cpp14[meta cpp]
namespace std {
inline namespace literals {
inline namespace string_literals {
string operator""s(const char* str, size_t len); // (1)
u8string operator""s(const char8_t* str, size_t len); // (2) C++20
u16string operator""s(const char16_t* str, size_t len); // (3)
u32string operator""s(const char32_t* str, size_t len); // (4)
wstring operator""s(const wchar_t* str, size_t len); // (5)
}}}
basic_string
型のリテラル。
文字列リテラルを受け取り、各文字型のbasic_string
オブジェクトを構築する。
- (1) :
string
型のリテラル - (2) :
u8string
型のリテラル - (3) :
u16string
型のリテラル - (4) :
u32string
型のリテラル - (5) :
wstring
型のリテラル
- (1) :
basic_string<char>{str, len}
- (2) :
basic_string<char8_t>{str, len}
- (3) :
basic_string<char16_t>{str, len}
- (4) :
basic_string<char32_t>{str, len}
- (5) :
basic_string<wchar_t>{str, len}
#include <string>
int main()
{
using namespace std::literals::string_literals;
std::string s1 = "hello"s; // 文字コード未規定のstringリテラル
#if defined(__cpp_char8_t) && 201803L <= __cpp_char8_t
std::u8string s2 = u8"hello"s; // UTF-8のstringリテラル(C++20)
#else
std::string s2 = u8"hello"s; // UTF-8のstringリテラル(C++11~C++17)
#endif
std::u16string s3 = u"hello"s; // u16stringリテラル
std::u32string s4 = U"hello"s; // u32stringリテラル
std::wstring s5 = L"hello"s; // 文字コード未規定のwstringリテラル
}
- "hello"s[color ff0000]
- C++14
- Clang, C++1y mode: 3.4
- GCC, C++1y mode: 4.9.0
- ICC: ??
- Visual C++: 2015