- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
字符串string的操作
第一部分 字符串
标准库? string?类型
string?类型支持长度可变的字符串,C++?标准库将负责管理与存储字符相关的内存,以及提供各种有用的操作.
C中的字符串和C++中的字符串的差别。
C字符串:就是以空字符null结束的字符数组。
例如:char ch[] = {‘c’,’h’};
char ch1[] = {‘c’,’h’,’\0’};
char *ch2 = “ch”;
const char *cp = “ch”;
char *cp1 = ch1;
strlen(s) 返回 s 的长度,不包括字符串结束符 null
strcmp(s1, s2) 比较两个字符串 s1 和 s2 是否相同。若 s1 与 s2 相等,返回 0;若 s1 大于 s2,返回正数;若 s1 小于 s2,则返回负数
strcat(s1, s2) 将字符串 s2 连接到 s1 后,并返回 s1
strcpy(s1, s2) 将 s2 复制给 s1,并返回 s1
strncat(s1, s2,n) 将 s2 的前 n 个字符连接到 s1 后面,并返回 s1
strncpy(s1, s2, n) 将 s2 的前 n 个字符复制给 s1,并返回 s1
传递给这些标准库函数例程的指针必须具有非零值,并且指向以 null 结束的字符数组中的第一个元素。其中一些标准库函数会修改传递给它的字符串,这些函数将假定它们所修改的字符串具有足够大的空间接收本函数新生成的字符, 程序员必须确保目标字符串必须足够大。
注意:
使用c风格字符串:要确保字符串的结尾带有null,对于strcat /strcpy这样的函数还要保证目标字符串有足够的空间,尽管这样还是会出现漏洞。所以尽量不要使用c的字符串操作。如果必须要使用的时侯,可以使用 strncpy和 strcat。可以严格的控制复制字符的个数。(记住长度包含结束符null)
只要可以正确计算出 实参n的值,使用 strn 版本要比没有 size 参数的简化版本更安全。但是,如果要向目标数组复制或串接比其 size 更多的字符,数组溢出的现象仍然会发生。如果要复制或串接的字符串比实际要复制或串接的 size 大,我们会不经意地把新生成的字符串截短了。截短字符串比数组溢出要安全,但这仍是错误的。
因此,尽量使用标准库类型string,标准库负责管理所有的内存管理问题,我们不用担心每一次修改字符串时,涉及到的大小问题。
字符串的内部结构实例1讲解。
字符串的创建于初始化。
什么是初始化?什么是赋值?初始化与赋值的区别在那里?见实例strInitlize.C
字符串初始化的方法:
除了实例1中提到的4中初始化的方法外,还有很多初始化的方法。
见实例1。
字符串的操作。
插入操作insert
替换操作assign
删除操作eraser
子串操作substr
修改操作append
replace
查找操作find
rfind
find_first_of
find_last_of
find_first_not_of
find_last_not_of
s.find( args ) 在 s 中查找 args 的第一次出现
s.rfind( args ) 在 s 中查找 args 的最后一次出现
s.find_first_of( args ) 在 s 中查找 args 的任意字符的第一次出现
s.find_last_of( args ) 在 s 中查找 args 的任意字符的最后一次出现
s.find_first_not_of( args ) 在 s 中查找第一个不属于 args 的字符
s.find_last_not_of( args ) 在 s 中查找最后一个不属于 args 的字符
可用的参数(args)集合:
(c,pos)
(s,pos)
(cp,pos)
(cp,pos,n)
见实例1
字符串的比较:关系操作符(==, !=, , =, ,=,)
比较函数
其它的操作:size()
empty()
下标操作符[]
链接操作符+
赋值操作=
关于string::size_type类型,
问题:可不可以直接把取size(包括find)返回结果直接给一个int变量。为什么?
虽然我们不知道string::size_type的确切类型,但可以知道它是unsigned型。 对于任意一种给定的数据类型,它的 unsigned?型所能表示的最大正
您可能关注的文档
最近下载
- 清华大学2021-2022学年第1学期《线性代数》期末考试试卷(B卷)及标准答案.docx
- 实验一用自然电位曲线估计地层水矿化度.doc VIP
- 清华大学2021-2022学年第1学期《线性代数》期末考试试卷(A卷)及标准答案.docx
- 1.疾病分类与代码国家临床版1.1.xlsx VIP
- 《基础写作》网上形考任务五.docx VIP
- 最新 贾柱立 京剧剧本 月圆时 汉英版 第一幕.doc VIP
- 中职生的班会主题.pptx VIP
- 钢结构课设-轻型屋面三角形钢屋架 05G517.pdf VIP
- 小学数学长度单位换算专项练习题(每日一练,共63份).docx VIP
- 园区运营管理可视化.docx VIP
原创力文档


文档评论(0)