Skip to content

Latest commit

 

History

History
78 lines (61 loc) · 2.11 KB

File metadata and controls

78 lines (61 loc) · 2.11 KB

sリテラル

  • 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

処理系

参照