本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《 阿里云开发者社区用户服务协议 》和 《 阿里云开发者社区知识产权保护指引 》。如果您发现本社区中有涉嫌抄袭的内容,填写 侵权投诉表单 进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

C99 有很多和 string 相关的函数,如 strcat strchr strcmp strcpy strlen strncat strncmp strncpy 等。然而使用 C++ 编程时,所有和 string 相关的操作均可以使用 string 类的相关接口完成, string 提供和原来 C 接口类似的功能和性能,同时提供更高的安全性。

String 类有一个特性: a string of length n must manage a block of memory whose size is at least n + 1 。即长度为 n string 对象,其内存空间至少为 n+1 个字符,且最后一个字符为 ’\0’

不过在进行 string 操作时,有一点必须牢记: C/C++ 语言的 string 是以 ’\0’ 结尾的,对不以 ’\0’ 结尾的 string 进行操作容易引发错误,甚至导致内存溢出等 crash

C++ string 类,除了用于 处理常规 string 操作 外,其本身也可用于 存储各种数据 ,如文件数据。使用者采用 string( const char* str, size_type length ); 来封装特定长度的 char* 数据块。 String 类的各种运算符将保证数据传递的完整性,即 string 对象。

test string  test string

说明:这个例子说明:当使用 string( const char* str, size_type length ); 来构造 string 对象时, string 对象的长度由外部指定,数据则来自 str ,如果 length 大于 str 地址范围,可能引发 crash!

这个例子也说明了 string 可用于封装数据,即使是 ’\0’ 的数据。因此, string 类可以用于存储各种数据,字符串、非字符串 ( 图片,视频 ) 等数据。

注意: 将数据拷贝到内存时,不要使用 strcpy, 应该使用 memcpy ,因为 strcpy strncpy 碰到 ’\0’ 将认为拷贝结束。 总之,不要使用和 str*** 相关的函数去操作内存数据,除非数据只能是 string(memcpy 完全可拷贝任何数据 )

---------------------------------------------------

兄弟的公司: 立即购--手机购物,诚信网购

兄弟的公司: 立即团

欢迎转载,请注明作者和出处

本文转自 zhenjing 博客园博客,原文链接: http://www.cnblogs.com/zhenjing/archive/2011/01/30/string_binary_data.html ,如需转载请自行联系原作者