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

继承自标准库std::basic_string_view的代理类,用来提供Modified-UTF-8 String的视图类型 更多...

#include <NBT_String.hpp>

类 NBT_StringView< String, StringView > 继承关系图:

Public 成员函数

constexpr NBT_StringView (const StringView &_Copy)
 提供从父类拷贝构造此类的途径
constexpr NBT_StringView (StringView &&_Move)
 提供从父类移动构造此类的途径
template<typename StringView::size_type N>
constexpr NBT_StringView (const typename StringView::value_type(&ltrStr)[N])
 通过c风格字符串或字符数组初始化
constexpr NBT_StringView (const NBT_String< String, StringView > &myString)
 通过对应的NBT_String,也就是NBT_Type::String显示初始化为视图View
 NBT_StringView (NBT_String< String, StringView > &&_Temp)=delete
 删除临时对象构造方式,防止从临时对象构造导致悬空指针
std::basic_string_view< char > GetCharTypeView (void) const noexcept
 直接获取char类型的视图

友元

class NBT_Reader
class NBT_Writer
class NBT_Helper

详细描述

template<typename String, typename StringView>
class NBT_StringView< String, StringView >

继承自标准库std::basic_string_view的代理类,用来提供Modified-UTF-8 String的视图类型

模板参数
StringView继承的父类,也就是std::basic_string_view
String与此类绑定的std::basic_string类型,用于提供互相转换功能
注解
用户不应自行实例化此类,请使用NBT_Type::String::View来访问此类实例化类型。

构造及析构函数说明

◆ NBT_StringView() [1/5]

template<typename String, typename StringView>
NBT_StringView< String, StringView >::NBT_StringView ( const StringView & _Copy)
inlineconstexpr

提供从父类拷贝构造此类的途径

参数
_Copy需要拷贝构造的对象

◆ NBT_StringView() [2/5]

template<typename String, typename StringView>
NBT_StringView< String, StringView >::NBT_StringView ( StringView && _Move)
inlineconstexpr

提供从父类移动构造此类的途径

参数
_Move需要移动构造的对象

◆ NBT_StringView() [3/5]

template<typename String, typename StringView>
template<typename StringView::size_type N>
NBT_StringView< String, StringView >::NBT_StringView ( const typename StringView::value_type(&) ltrStr[N])
inlineconstexpr

通过c风格字符串或字符数组初始化

模板参数
N数组的长度,自动计算
参数
ltrStr数组的引用
注解
如果字符串或字符数组以c风格字符串的\0或mutf8的0x80 0xc0结尾,则裁切多余结尾,因为string数据中不应包含字符串结束符。 这里视图的裁切仅缩小视图内存储的字符串实际大小,而非修改原始对象进行修改, 因为View仅构造为视图,不持有对象,如果引用的对象提前结束生命周期,会导致未定义行为, 请保证被View引用的对象生存周期大于View,或在生存周期结束后不再使用由其初始化的View。

◆ NBT_StringView() [4/5]

template<typename String, typename StringView>
NBT_StringView< String, StringView >::NBT_StringView ( const NBT_String< String, StringView > & myString)
inlineexplicitconstexpr

通过对应的NBT_String,也就是NBT_Type::String显示初始化为视图View

参数
myString当前类对应的NBT_String的引用
注解
显示构造的目的是防止意外的非持有性转换导致非预期的对象生命周期。 因为View仅构造为视图,不持有对象,如果引用的对象提前结束生命周期,会导致未定义行为, 请保证被View引用的对象生存周期大于View,或在生存周期结束后不再使用由其初始化的View。 同时,如果构造视图的NBT_String对象改变,则它的data结果很可能也会改变,此时再使用此对象也会导致未定义行为,请重新构造。

◆ NBT_StringView() [5/5]

template<typename String, typename StringView>
NBT_StringView< String, StringView >::NBT_StringView ( NBT_String< String, StringView > && _Temp)
delete

删除临时对象构造方式,防止从临时对象构造导致悬空指针

参数
_Temp参数未使用 临时对象的引用
注解
一定程度上的防御,防止用户疏忽,但是无法完全杜绝极端情况。

成员函数说明

◆ GetCharTypeView()

template<typename String, typename StringView>
std::basic_string_view< char > NBT_StringView< String, StringView >::GetCharTypeView ( void ) const
inlinenoexcept

直接获取char类型的视图

返回
返回char类型的视图View
注解
仅用于方便部分只支持char类型字符串的库使用,不要把它当成Mutf8到Utf8的字符编码转换功能。 要使用此转换,请使用NBT_String,也就是NBT_Type::String中的转换函数,或是直接通过此对象调用MUTF8_Tool中 的转换API,此类不直接提供转换API的原因在于这个类不该完成带有额外拷贝或开销的内容,它只是视图。

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