chenjunfu2-nbt-cpp v2.1.0
一个基于CPP20的NBT(Named Binary Tag)库
载入中...
搜索中...
未找到
MUTF8_Tool< MU8T, U16T, U8T > 模板类 参考

用于处理Java的Modified-UTF-8(以下简称M-UTF-8)字符串与UTF-8或UTF-16的静态或动态转换 更多...

#include <MUTF8_Tool.hpp>

Public 类型

using MU8_T = MU8T
 模板M-UTF-8字符类型的代理
using U16_T = U16T
 模板UTF-16字符类型的代理
using U8_T = U8T
 模板UTF-8字符类型的代理

静态 Public 成员函数

static constexpr size_t U16ToMU8Length (const std::basic_string_view< U16T > &u16String)
 精确计算UTF-16转换到M-UTF-8所需的M-UTF-8字符串的长度
static constexpr size_t U16ToMU8Length (const U16T *u16String, size_t szStringLength)
 精确计算UTF-16转换到M-UTF-8所需的M-UTF-8字符串的长度
static std::basic_string< MU8T > U16ToMU8 (const std::basic_string_view< U16T > &u16String, size_t szReserve=0)
 获取UTF-16转换到M-UTF-8的字符串
static std::basic_string< MU8T > U16ToMU8 (const U16T *u16String, size_t szStringLength, size_t szReserve=0)
 获取UTF-16转换到M-UTF-8的字符串
template<MUTF8_Tool_Internal::StringLiteral u16String>
requires std::is_same_v<typename decltype(u16String)::value_type, U16T>
static consteval std::basic_string_view< MU8T > U16ToMU8 (void)
 通过UTF-16字符串字面量,直接获得编译期的M-UTF-8静态字符串
static constexpr size_t U8ToMU8Length (const std::basic_string_view< U8T > &u8String)
 精确计算UTF-8转换到M-UTF-8所需的M-UTF-8字符串的长度
static constexpr size_t U8ToMU8Length (const U8T *u8String, size_t szStringLength)
 精确计算UTF-8转换到M-UTF-8所需的M-UTF-8字符串的长度
static std::basic_string< MU8T > U8ToMU8 (const std::basic_string_view< U8T > &u8String, size_t szReserve=0)
 获取UTF-8转换到M-UTF-8的字符串
static std::basic_string< MU8T > U8ToMU8 (const U8T *u8String, size_t szStringLength, size_t szReserve=0)
 获取UTF-8转换到M-UTF-8的字符串
template<MUTF8_Tool_Internal::StringLiteral u8String>
requires std::is_same_v<typename decltype(u8String)::value_type, U8T>
static consteval std::basic_string_view< MU8T > U8ToMU8 (void)
 通过UTF-8字符串字面量,直接获得编译期的M-UTF-8静态字符串
static constexpr size_t MU8ToU16Length (const std::basic_string_view< MU8T > &mu8String)
 精确计算M-UTF-8转换到UTF-16所需的UTF-16字符串的长度
static constexpr size_t MU8ToU16Length (const MU8T *mu8String, size_t szStringLength)
 精确计算M-UTF-8转换到UTF-16所需的UTF-16字符串的长度
static std::basic_string< U16T > MU8ToU16 (const std::basic_string_view< MU8T > &mu8String, size_t szReserve=0)
 获取M-UTF-8转换到UTF-16的字符串
static std::basic_string< U16T > MU8ToU16 (const MU8T *mu8String, size_t szStringLength, size_t szReserve=0)
 获取M-UTF-8转换到UTF-16的字符串
static constexpr size_t MU8ToU8Length (const std::basic_string_view< MU8T > &mu8String)
 精确计算M-UTF-8转换到UTF-8所需的UTF-8字符串的长度
static constexpr size_t MU8ToU8Length (const MU8T *mu8String, size_t szStringLength)
 精确计算M-UTF-8转换到UTF-8所需的UTF-8字符串的长度
static std::basic_string< U8T > MU8ToU8 (const std::basic_string_view< MU8T > &mu8String, size_t szReserve=0)
 获取M-UTF-8转换到UTF-8的字符串
static std::basic_string< U8T > MU8ToU8 (const MU8T *mu8String, size_t szStringLength, size_t szReserve=0)
 获取M-UTF-8转换到UTF-8的字符串

详细描述

template<typename MU8T = uint8_t, typename U16T = char16_t, typename U8T = char8_t>
class MUTF8_Tool< MU8T, U16T, U8T >

用于处理Java的Modified-UTF-8(以下简称M-UTF-8)字符串与UTF-8或UTF-16的静态或动态转换

模板参数
MU8TM-UTF-8对应的字符类型,简写为MU8
U16TUTF-16对应的字符类型
U8TUTF-8对应的字符类型
注解
类仅提供M-UTF-8的静态生成方式,因为UTF-8或UTF-16可以由编译器支持,而M-UTF-8不存在支持

成员函数说明

◆ MU8ToU16() [1/2]

template<typename MU8T = uint8_t, typename U16T = char16_t, typename U8T = char8_t>
std::basic_string< U16T > MUTF8_Tool< MU8T, U16T, U8T >::MU8ToU16 ( const MU8T * mu8String,
size_t szStringLength,
size_t szReserve = 0 )
inlinestatic

获取M-UTF-8转换到UTF-16的字符串

参数
mu8StringM-UTF-8字符串的指针
szStringLengthM-UTF-8字符串的长度
szReserve转换后的字符串长度(此项用于一定程度避免动态扩容开销,值可以从MU8ToU16Length调用获得)
返回
转换后的字符串
注解
请注意:是长度而非字节数

◆ MU8ToU16() [2/2]

template<typename MU8T = uint8_t, typename U16T = char16_t, typename U8T = char8_t>
std::basic_string< U16T > MUTF8_Tool< MU8T, U16T, U8T >::MU8ToU16 ( const std::basic_string_view< MU8T > & mu8String,
size_t szReserve = 0 )
inlinestatic

获取M-UTF-8转换到UTF-16的字符串

参数
mu8StringM-UTF-8字符串的视图
szReserve转换后的字符串长度(此项用于一定程度避免动态扩容开销,值可以从MU8ToU16Length调用获得)
返回
转换后的字符串
注解
请注意:是长度而非字节数

◆ MU8ToU16Length() [1/2]

template<typename MU8T = uint8_t, typename U16T = char16_t, typename U8T = char8_t>
constexpr size_t MUTF8_Tool< MU8T, U16T, U8T >::MU8ToU16Length ( const MU8T * mu8String,
size_t szStringLength )
inlinestaticconstexpr

精确计算M-UTF-8转换到UTF-16所需的UTF-16字符串的长度

参数
mu8StringM-UTF-8字符串的指针
szStringLengthM-UTF-8字符串的长度
返回
计算的长度
注解
请注意:是长度而非字节数

◆ MU8ToU16Length() [2/2]

template<typename MU8T = uint8_t, typename U16T = char16_t, typename U8T = char8_t>
constexpr size_t MUTF8_Tool< MU8T, U16T, U8T >::MU8ToU16Length ( const std::basic_string_view< MU8T > & mu8String)
inlinestaticconstexpr

精确计算M-UTF-8转换到UTF-16所需的UTF-16字符串的长度

参数
mu8StringM-UTF-8字符串的视图
返回
计算的长度
注解
请注意:是长度而非字节数

◆ MU8ToU8() [1/2]

template<typename MU8T = uint8_t, typename U16T = char16_t, typename U8T = char8_t>
std::basic_string< U8T > MUTF8_Tool< MU8T, U16T, U8T >::MU8ToU8 ( const MU8T * mu8String,
size_t szStringLength,
size_t szReserve = 0 )
inlinestatic

获取M-UTF-8转换到UTF-8的字符串

参数
mu8StringM-UTF-8字符串的指针
szStringLengthM-UTF-8字符串的长度
szReserve转换后的字符串长度(此项用于一定程度避免动态扩容开销,值可以从MU8ToU8Length调用获得)
返回
转换后的字符串
注解
请注意:是长度而非字节数

◆ MU8ToU8() [2/2]

template<typename MU8T = uint8_t, typename U16T = char16_t, typename U8T = char8_t>
std::basic_string< U8T > MUTF8_Tool< MU8T, U16T, U8T >::MU8ToU8 ( const std::basic_string_view< MU8T > & mu8String,
size_t szReserve = 0 )
inlinestatic

获取M-UTF-8转换到UTF-8的字符串

参数
mu8StringM-UTF-8字符串的视图
szReserve转换后的字符串长度(此项用于一定程度避免动态扩容开销,值可以从MU8ToU8Length调用获得)
返回
转换后的字符串
注解
请注意:是长度而非字节数

◆ MU8ToU8Length() [1/2]

template<typename MU8T = uint8_t, typename U16T = char16_t, typename U8T = char8_t>
constexpr size_t MUTF8_Tool< MU8T, U16T, U8T >::MU8ToU8Length ( const MU8T * mu8String,
size_t szStringLength )
inlinestaticconstexpr

精确计算M-UTF-8转换到UTF-8所需的UTF-8字符串的长度

参数
mu8StringM-UTF-8字符串的指针
szStringLengthM-UTF-8字符串的长度
返回
计算的长度
注解
请注意:是长度而非字节数

◆ MU8ToU8Length() [2/2]

template<typename MU8T = uint8_t, typename U16T = char16_t, typename U8T = char8_t>
constexpr size_t MUTF8_Tool< MU8T, U16T, U8T >::MU8ToU8Length ( const std::basic_string_view< MU8T > & mu8String)
inlinestaticconstexpr

精确计算M-UTF-8转换到UTF-8所需的UTF-8字符串的长度

参数
mu8StringM-UTF-8字符串的视图
返回
计算的长度
注解
请注意:是长度而非字节数

◆ U16ToMU8() [1/3]

template<typename MU8T = uint8_t, typename U16T = char16_t, typename U8T = char8_t>
std::basic_string< MU8T > MUTF8_Tool< MU8T, U16T, U8T >::U16ToMU8 ( const std::basic_string_view< U16T > & u16String,
size_t szReserve = 0 )
inlinestatic

获取UTF-16转换到M-UTF-8的字符串

参数
u16StringUTF-16字符串的视图
szReserve转换后的字符串长度(此项用于一定程度避免动态扩容开销,值可以从U16ToMU8Length调用获得)
返回
转换后的字符串
注解
请注意:是长度而非字节数

◆ U16ToMU8() [2/3]

template<typename MU8T = uint8_t, typename U16T = char16_t, typename U8T = char8_t>
std::basic_string< MU8T > MUTF8_Tool< MU8T, U16T, U8T >::U16ToMU8 ( const U16T * u16String,
size_t szStringLength,
size_t szReserve = 0 )
inlinestatic

获取UTF-16转换到M-UTF-8的字符串

参数
u16StringUTF-16字符串的指针
szStringLengthUTF-16字符串的长度
szReserve转换后的字符串长度(此项用于一定程度避免动态扩容开销,值可以从U16ToMU8Length调用获得)
返回
转换后的字符串
注解
请注意:是长度而非字节数

◆ U16ToMU8() [3/3]

template<typename MU8T = uint8_t, typename U16T = char16_t, typename U8T = char8_t>
template<MUTF8_Tool_Internal::StringLiteral u16String>
requires std::is_same_v<typename decltype(u16String)::value_type, U16T>
consteval std::basic_string_view< MU8T > MUTF8_Tool< MU8T, U16T, U8T >::U16ToMU8 ( void )
inlinestaticconsteval

通过UTF-16字符串字面量,直接获得编译期的M-UTF-8静态字符串

模板参数
u16StringUTF-16字符串字面量,用于构造MUTF8_Tool_Internal::StringLiteral
返回
一个由std::basic_string_view存储的静态字符串数组,可用于构造NBT_Type::String或进行比较等
注解
此函数仅能在编译期使用,内部会先生成临时std::array对象然后通过ToStringView模板进行固化, 以生成编译期常量(类似字符串字面量),这样就能只存储它的指针与大小,并在任何地方使用而不会导致生命周期提前结束

◆ U16ToMU8Length() [1/2]

template<typename MU8T = uint8_t, typename U16T = char16_t, typename U8T = char8_t>
constexpr size_t MUTF8_Tool< MU8T, U16T, U8T >::U16ToMU8Length ( const std::basic_string_view< U16T > & u16String)
inlinestaticconstexpr

精确计算UTF-16转换到M-UTF-8所需的M-UTF-8字符串的长度

参数
u16StringUTF-16字符串的视图
返回
计算的长度
注解
请注意:是长度而非字节数

◆ U16ToMU8Length() [2/2]

template<typename MU8T = uint8_t, typename U16T = char16_t, typename U8T = char8_t>
constexpr size_t MUTF8_Tool< MU8T, U16T, U8T >::U16ToMU8Length ( const U16T * u16String,
size_t szStringLength )
inlinestaticconstexpr

精确计算UTF-16转换到M-UTF-8所需的M-UTF-8字符串的长度

参数
u16StringUTF-16字符串的指针
szStringLengthUTF-16字符串的长度
返回
计算的长度
注解
请注意:是长度而非字节数

◆ U8ToMU8() [1/3]

template<typename MU8T = uint8_t, typename U16T = char16_t, typename U8T = char8_t>
std::basic_string< MU8T > MUTF8_Tool< MU8T, U16T, U8T >::U8ToMU8 ( const std::basic_string_view< U8T > & u8String,
size_t szReserve = 0 )
inlinestatic

获取UTF-8转换到M-UTF-8的字符串

参数
u8StringUTF-8字符串的视图
szReserve转换后的字符串长度(此项用于一定程度避免动态扩容开销,值可以从U8ToMU8Length调用获得)
返回
转换后的字符串
注解
请注意:是长度而非字节数

◆ U8ToMU8() [2/3]

template<typename MU8T = uint8_t, typename U16T = char16_t, typename U8T = char8_t>
std::basic_string< MU8T > MUTF8_Tool< MU8T, U16T, U8T >::U8ToMU8 ( const U8T * u8String,
size_t szStringLength,
size_t szReserve = 0 )
inlinestatic

获取UTF-8转换到M-UTF-8的字符串

参数
u8StringUTF-8字符串的指针
szStringLengthUTF-8字符串的长度
szReserve转换后的字符串长度(此项用于一定程度避免动态扩容开销,值可以从U8ToMU8Length调用获得)
返回
转换后的字符串
注解
请注意:是长度而非字节数

◆ U8ToMU8() [3/3]

template<typename MU8T = uint8_t, typename U16T = char16_t, typename U8T = char8_t>
template<MUTF8_Tool_Internal::StringLiteral u8String>
requires std::is_same_v<typename decltype(u8String)::value_type, U8T>
consteval std::basic_string_view< MU8T > MUTF8_Tool< MU8T, U16T, U8T >::U8ToMU8 ( void )
inlinestaticconsteval

通过UTF-8字符串字面量,直接获得编译期的M-UTF-8静态字符串

模板参数
u8StringUTF-8字符串字面量,用于构造MUTF8_Tool_Internal::StringLiteral
返回
一个由std::string_view存储的静态字符串数组,可用于构造NBT_Type::String或进行比较等
注解
此函数仅能在编译期使用,内部会先生成临时std::array对象然后通过ToStringView模板进行固化, 以生成编译期常量(类似字符串字面量),这样就能只存储它的指针与大小,并在任何地方使用而不会导致生命周期提前结束

◆ U8ToMU8Length() [1/2]

template<typename MU8T = uint8_t, typename U16T = char16_t, typename U8T = char8_t>
constexpr size_t MUTF8_Tool< MU8T, U16T, U8T >::U8ToMU8Length ( const std::basic_string_view< U8T > & u8String)
inlinestaticconstexpr

精确计算UTF-8转换到M-UTF-8所需的M-UTF-8字符串的长度

参数
u8StringUTF-8字符串的视图
返回
计算的长度
注解
请注意:是长度而非字节数

◆ U8ToMU8Length() [2/2]

template<typename MU8T = uint8_t, typename U16T = char16_t, typename U8T = char8_t>
constexpr size_t MUTF8_Tool< MU8T, U16T, U8T >::U8ToMU8Length ( const U8T * u8String,
size_t szStringLength )
inlinestaticconstexpr

精确计算UTF-8转换到M-UTF-8所需的M-UTF-8字符串的长度

参数
u8StringUTF-8字符串的指针
szStringLengthUTF-8字符串的长度
返回
计算的长度
注解
请注意:是长度而非字节数

该类的文档由以下文件生成: