a byte string for store low level data type
#目录[TOC]
[TOC]
#base info
在基于TCP/UDP 或者串口通信等底层的通信过程中,涉及到大量的字符串操作:存储,拷贝, 传参 等。 xbytestring 类时面向底层通信,专门针对 unsigned char ** 字符串操作的而开发的。 相对于使用 字符指针的开发方式, xbytestring 具备 调用方便, 安全的特性,很好的解决了 字符串操作过程中遇到的诸多缺陷,于此同时 xbytestring 可以很好的兼容** ST::string ,unsigned char ,char 数据类型,方便开发者更加在各个数据类型之间转化。
#background
在低层次的网络通信过程中,所有的数据都是通过 ascii 码的形式接受和传输,使用char,或者unsigned char的数据类型 进行数据的存储或者传递 对于上层的开发时是非常不方便。 由于期间涉及到大量的动态内存创建 和删除,指针传递,拷贝,内存溢出则是这其中最容易引发的问题,这是另无数开发头疼不已的问题,虽然很多情况下可以用智能指针解决这个问题,但是对于字符的操作却不总是那么的安全和友好。
- C 语言的特性 : 为了高效而牺牲了代码的安全
- 高级的语言特性 : 牺牲代码的效率来换取 代码安全和开发效率
稍微有开发经验的读者可能联想到了 STL库提供的 std::string来解决这个问题. string 可以很好的做到 字符串数据的存储和 传递, 但是在实际的开发的过程中,基于UDP /TCP 协议的网络通信中,涉及到大量的使用0x00
这样的字符代表的操作, 而string 天生对0x 00
敏感的特性(默认为结束符),导致string会自动丢弃在接受到0x00
字符后的所有的数据.
很显然,这不是我们所希望看到的结果。
为了更好的兼容
0x00
,方便的存储和传参的需求, 在开发过程中急需一 类似于string
的容器,可以很好的存储网络当中给定长度的 字符串.
经过一番谷歌之后, 仅有的一点发现也仅仅 是 java 平台下的 ByteString ,很可惜,这不是给C++ 用的, 考虑再三,为什么不重造一个呢? 造轮子可是C++ 的专利啊。
#feature
- 操作方便安全,接口友好
- 兼容 string 的接口
- 默认存储 unsigned char
- 快速实现 xbytestring 和 char ,string 数据类型的转化
- 自由拓展字符串长度
- 内存安全