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
,如需转载请自行联系原作者