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

默认输出流类,用于将数据写入到标准库容器中 更多...

#include <NBT_IO.hpp>

Public 类型

using StreamType = T
 容器类型
using ValueType = typename T::value_type
 容器值类型

Public 成员函数

 DefaultOutputStream (T &_tData, size_t szStartIdx=0)
 构造函数
 ~DefaultOutputStream (void)=default
 默认析构函数
 DefaultOutputStream (const DefaultOutputStream &)=delete
 禁止拷贝构造
 DefaultOutputStream (DefaultOutputStream &&)=delete
 禁止移动构造
DefaultOutputStreamoperator= (const DefaultOutputStream &)=delete
 禁止拷贝赋值
DefaultOutputStreamoperator= (DefaultOutputStream &&)=delete
 禁止移动赋值
const ValueTypeoperator[] (size_t szIndex) const noexcept
 下标访问运算符
template<typename V>
requires (std::is_constructible_v<ValueType, V &&>)
void PutOnce (V &&c)
 向流中写入写入单个值
void PutRange (const ValueType *pData, size_t szSize)
 向流中写入一段数据
void AddReserve (size_t szAddSize)
 预分配额外容量
void UnPut (void) noexcept
 删除(撤销)最后一个写入的字节
size_t Size (void) const noexcept
 获取当前字节流中已有的数据大小
void Reset (void) noexcept
 重置流,清空所有数据
const T & Data (void) const noexcept
 获取底层数据的常量引用
T & Data (void) noexcept
 获取底层数据的非常量引用

详细描述

template<typename T = std::vector<uint8_t>>
class NBT_IO::DefaultOutputStream< T >

默认输出流类,用于将数据写入到标准库容器中

模板参数
T数据容器类型,必须满足以下要求:
  • value_type的大小必须为1字节
  • value_type必须是可平凡复制的类型
注解
这个类用于标准库的顺序容器,非标准库容器顺序请使用其它的自定义流对象,而非使用此对象, 因为此对象对标准库容器的部分实现存在假设,其它非标准库容器极有可能不兼容导致未定义行为。 可以注意到部分接口在类中并未使用,这是未来扩展时可能用到的,如果自定义流对象,则可以省略部分未使用的接口。

构造及析构函数说明

◆ DefaultOutputStream()

template<typename T = std::vector<uint8_t>>
NBT_IO::DefaultOutputStream< T >::DefaultOutputStream ( T & _tData,
size_t szStartIdx = 0 )
inline

构造函数

参数
_tData输出数据容器的引用
szStartIdx起始索引,容器会调整大小到此索引位置
注解
索引位置后的数据都会被删除,然后从索引当前位置开始写入

成员函数说明

◆ AddReserve()

template<typename T = std::vector<uint8_t>>
void NBT_IO::DefaultOutputStream< T >::AddReserve ( size_t szAddSize)
inline

预分配额外容量

参数
szAddSize要额外分配的容量大小(字节数)
注解
这个接口一般是用于性能优化的,提前要求流预留空间以便后续的写入。 请不要假设在所有写入操作之前都会进行此调用,这个接口只有部分情况会用到。

◆ Data() [1/2]

template<typename T = std::vector<uint8_t>>
const T & NBT_IO::DefaultOutputStream< T >::Data ( void ) const
inlinenoexcept

获取底层数据的常量引用

返回
底层数据容器的常量引用

◆ Data() [2/2]

template<typename T = std::vector<uint8_t>>
T & NBT_IO::DefaultOutputStream< T >::Data ( void )
inlinenoexcept

获取底层数据的非常量引用

返回
底层数据容器的非常量引用

◆ operator[]()

template<typename T = std::vector<uint8_t>>
const ValueType & NBT_IO::DefaultOutputStream< T >::operator[] ( size_t szIndex) const
inlinenoexcept

下标访问运算符

参数
szIndex索引位置
返回
对应位置的常量引用
注解
这个接口一般用于随机访问流中的数据,而不修改流,调用者保证访问范围合法

◆ PutOnce()

template<typename T = std::vector<uint8_t>>
template<typename V>
requires (std::is_constructible_v<ValueType, V &&>)
void NBT_IO::DefaultOutputStream< T >::PutOnce ( V && c)
inline

向流中写入写入单个值

模板参数
V元素类型,必须可构造为ValueType
参数
c要写入的元素
注解
这个接口一般用于逐个向流中写入数据

◆ PutRange()

template<typename T = std::vector<uint8_t>>
void NBT_IO::DefaultOutputStream< T >::PutRange ( const ValueType * pData,
size_t szSize )
inline

向流中写入一段数据

参数
pData指向要写入数据的缓冲区的指针
szSize要写入的数据大小(字节数)
注解
这个接口一般用于批量向流中写入数据

◆ Size()

template<typename T = std::vector<uint8_t>>
size_t NBT_IO::DefaultOutputStream< T >::Size ( void ) const
inlinenoexcept

获取当前字节流中已有的数据大小

返回
数据大小,以字节数计

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