定长字符串
LibXR::String<N> 是一个模板类,用于封装定长字符串,支持安全的构造、比较、查找、追加等操作,适用于资源受限的嵌入式环境。
特性概览
- 固定长度:最大长度通过模板参数
MaxLength指定,底层使用std::array<char, MaxLength+1>存储,并始终以\0结尾。 - 安全操作:大部分接口使用边界检查和断言,确保不会越界访问。
- 兼容 C 风格字符串:支持从
const char*、指定长度的字符串构造,并支持Raw()获取底层字符串。 - 字符串追加与查找:支持
+=追加和Find()查找子串。 - 完整的比较操作符支持:支持
==, !=, <, >, <=, >=运算符。
使用示例
LibXR::String<32> s1("hello");
s1 += " world";
int idx = s1.Find("lo"); // 返回 3
auto sub = s1.Substr<5>(6); // 从下标 6 开始截取 5 个字符的子串
接口说明
构造函数
String():构造空字符串。String(const char* str):从 C 风格字符串构造。String(const char* str, size_t len):从指定长度的字符串构造。
基本方法
const char* Raw() const:获取底层 C 风格字符串。size_t Length() const:获取字符串当前长度。void Clear():清空字符串。int Find(const char* str) const:查找子串位置,不存在返回 -1。template <unsigned int SubStrLength> String<SubStrLength> Substr(size_t pos) const:从指定位置提取子串。
操作符
+=:追加 C 字符串。[]:索引访问字符(带边界断言)。- 比较操作符:
==, !=, <, >, <=, >=均支持跨不同长度模板的String<N>。