关于C++ std::string如何增加数据
2016-08-05 12:33
357 查看
C++的
从
std::string,和C的
char*不一样,
string是个
char*和
size,所以
string里面能存任何
char,包括
NULL或
(char)0都可以存里面,
string并不依靠
NULL或
(char)0指定
size。
string能用做
payload,譬如
rtmp的
video和
audio的
payload,也就是音频和视频数据,是可以直接用
string存储的,而且能避免内存拷贝,不用自己做引用计数。可惜做
srs时忘记了这一点,自己实现了引用计数,实际上是没有必要的。
string可以将内存块加进来,譬如:
string s; s.append(p0, 8); // 新增8字节内容 s.append(p1, 64); // 新增64字节内容 s.length(); // 这时候s长度是72字节了
string也可以直接加字符,譬如:
string s; s += 'h'; s += 'e'; s += 'l'; s += 'l'; s += 'o'; s.data(); // 这个时候返回的是char*,"hello"
从
string中取数据有三个常用的方式:
s.at(index): char,返回指定位置的char字符。
s.c_str(): const char*,返回C风格的char*,以NULL结尾。
s.data(): char*,返回数据的指针。
string在协议解析中做cache,还是很有用的。
相关文章推荐
- 如何利用ccform自定义表单来增加自己的控件,关于Sys_FrmEle表结构与数据存储设计?
- 关于SpringMVC中如何把查询数据全转成String类型
- 关于Donews的记忆---如何编写自定义函数GetItemAny,使其能从任何数据类型里取值
- 在没有数据时,如何使用FormView增加数据
- 转:在没有数据时,如何使用FormView增加数据
- 单据多分录中如何对某个页签中分录行数据增加做前处理和后处理?
- 动手改造Ibatis,使其支持文件系统存储数据列 之 看我如何给ResultMap增加属性
- 关于ASP中如何批量数据更新?
- 关于如何取Dev Express中一些控件中的数据与Oracle的一些操作
- 工作手记 关于GetPrivateProfileString函数以及如何即时调试debug以及release版本的程式
- 解决项目需求变化:如何应对数据表中字段的增加
- mysql 单表数据量大时,如何增加查询速度
- 关于Excel中的数据如何导入到oracle数据库中.
- 向大家请教一个关于sharepoint2003的问题,如何使一个Custom List in Datasheet View中某个field从其他list抽取数据当显示时?
- 关于ThreadLocal如何保证数据线程安全
- 工作手记 关于GetPrivateProfileString函数以及如何即时调试debug以及release版本的程式
- 请问如何清空StringGrid里面的数据???急!
- *关于如何获取指定表的指定字段的数据类型的方法
- 关于DropDownList强行增加数据
- 关于insert的语句从查询获得数据,并且从序列获得ID,该如何写?