constexpr text_encoding() = default; // (1) C++26
constexpr explicit text_encoding(string_view enc) noexcept; // (2) C++26
constexpr text_encoding(id i) noexcept; // (3) C++26
概要
text_encodingオブジェクトを構築する。
- (1) : デフォルトコンストラクタ。
mib_をid::unknownに初期化する - (2) : エンコーディング名から構築する。IANA登録名またはエイリアスに一致する場合は対応するMIB値が設定され、一致しない場合は
id::otherが設定される - (3) : MIB列挙値から構築する
事前条件
- (2) :
encは基本文字集合の要素のみで構成される通常リテラルエンコーディングの文字列を表すenc.size() <= max_name_lengthenc.contains('\0')がfalse
事後条件
- (2) :
- (3) :
mib_ == i(mib_ == id::unknown || mib_ == id::other)がtrueの場合、strlen(name_) == 0。そうでなければ、ranges::contains(aliases(),string_view(name_))がtrue
例外
投げない。
例
#include <text_encoding>
#include <cassert>
#include <string_view>
int main() {
using namespace std::string_view_literals;
// (1) デフォルト構築
std::text_encoding te1;
assert(te1.mib() == std::text_encoding::id::unknown);
// (2) エンコーディング名から構築
std::text_encoding te2{"utf-8"};
assert(te2.mib() == std::text_encoding::id::UTF8);
assert(te2.name() == "utf-8"sv);
// (2) 登録されていないエンコーディング名
std::text_encoding te3{"WTF-8"};
assert(te3.mib() == std::text_encoding::id::other);
// (3) MIB値から構築
std::text_encoding te4{std::text_encoding::id::ShiftJIS};
assert(te4.mib() == std::text_encoding::id::ShiftJIS);
}
出力
バージョン
言語
- C++26
処理系
- Clang: ??
- GCC: 15 ✅
- Visual C++: ??