C++ string 详解.docx


文档分类:IT计算机 | 页数:约7页 举报非法文档有奖
1/7
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/7
文档列表 文档介绍
C++string 详解
之所以抛弃char*的字符串而选用C++标准程序库中的string 类,是因为他和前者比较起来, 不必担心内存是否足够、字符串长度等等,而且作为一个类出现,他集成的操作函数足以完成我们大多数情况下(甚至是 1内存的大小有关系。我们一般情况下不用 关心他,应该大小足够我们用的。但是不够用的话,会抛出length_error 异常c)capacity()重新分配内存之前 string 所能包含的最大字符数。这里另一个需要指出的是 reserve()函数,这个函数为string 重新分配内存。重新分配的大小由其参数决定,默认参数为0,这时候会对string 进行非强制性缩减。
还有必要再重复一下C++字符串和C 字符串转换的问题,许多人会遇到这样的问题,自己做的程序要调用别人的函数、类什么的(比如数据库连接函数Connect(char*,char*)),但别 人的函数参数用的是char*形式的,而我们知道,c_str()、data()返回的字符数组由该字符串 拥有,所以是一种const char*,要想作为上面提及的函数的参数,还必须拷贝到一个char*, 而我们的原则是能不使用C 字符串就不使用。那么,这时候我们的处理方式是:如果此函数对参数(也就是char*)的内容不修改的话,我们可以这样Connect((char*)(), (char*)()),但是这时候是存在危险的,因为这样转换后的字符串其实是可以修改 的(有兴趣地可以自己试一试),所以我强调除非函数调用的时候不对参数进行修改,否则 必须拷贝到一个char*上去。当然,更稳妥的办法是无论什么情况都拷贝到一个char*上去。同时我们也祈祷现在仍然使用C 字符串进行编程的高手们(说他们是高手一点儿也不为过, 也许在我们还穿开裆裤的时候他们就开始编程了,哈哈…)写的函数都比较规范,那样我们 就不必进行强制转换了。
元素存取
我们可以使用下标操作符[]和函数at()对元素包含的字符进行访问。但是应该注意的是操作符[]并不检查索引是否有效(有效索引0~()),如果索引失效,会引起未定义的行为。而at()会检查,如果使用 at()的时候索引无效,会抛出out_of_range 异常。
有一个例外不得不说,const string a;的操作符[]()仍然有效,其返回值
是 \0 。其他的各种情况,()索引都是无效的。举例如下:
const string Cstr(“const string”); string Str(“string”);
Str[3]; //ok (3); //ok
Str[100]; //(100); //throw out_of_range
Str[()] //未定义行为Cstr[()] //返回 „\0 (());//throw out_of_range
(()) ////throw out_of_range
我不赞成类

C++ string 详解 来自淘豆网m.daumloan.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数7
  • 收藏数0 收藏
  • 顶次数0
  • 上传人夜紫儿
  • 文件大小18 KB
  • 时间2022-06-12