最終更新日時(UTC):
が更新

履歴 編集

function
<string>

std::string_literals::sリテラル(C++14)

namespace std {
inline namespace literals {
inline namespace string_literals {
  string operator""s(const char* str, size_t len);                  // (1) C++14
  constexpr string operator""s(const char* str, size_t len);        // (1) C++20

  constexpr u8string operator""s(const char8_t* str, size_t len);   // (2) C++20

  u16string operator""s(const char16_t* str, size_t len);           // (3) C++14
  constexpr u16string operator""s(const char16_t* str, size_t len); // (3) C++20

  u32string operator""s(const char32_t* str, size_t len);           // (4) C++14
  constexpr u32string operator""s(const char32_t* str, size_t len); // (4) C++20

  wstring operator""s(const wchar_t* str, size_t len);              // (5) C++14
  constexpr wstring operator""s(const wchar_t* str, size_t len);    // (5) C++20
}}}

概要

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リテラル
}

出力

バージョン

言語

  • C++14

処理系

参照