6.5 C++ strings(C++字符串)

C风格字符串常见错误:试图去访问数组范围以外的元素;没有使用函数strcpy( )来实现字符串之间的复制;没有使用函数strcmp( )来比较两个字符串 …

C++ 字符串:数据类型不是C++语言固有的一种数据类型;在C++ 中,string 数据类型是由类来定义的;

Remark:字符串比较:直接使用==, <, >,等

6.5.1字符串初始化和赋值

(第10-14行演示了如何用一些相同的字符分配一个C++字符串。可以用两行或多行来为C++字符串赋值。)

空白字符串:只定义,不赋值的字符串。

方法一:string str1;//后续也没有对str1赋值

方法二:string str2="";//两个英文引号内没有任何内容

第33行演示了assign() 把str1字符串的一部分赋值给str5。 str1 是被赋值的源字符串 1 是赋值的起始位置 3 是赋值的字符个数

交换函数(swap

交换字符串str1.swap( str2 ):交换字符串str1和str2

赋值函数(assign

str1.assign(str2,firstposition,lenth);  用str2的子串给str1赋值,即从下标firstposition开始的,长度为lenth的元素为str1赋值

例如:str1=“ABCDEFGH”;  str2.assign(str1,1,3);  则str2为BCD

其他形式:

str1.assign(str2);   用str2为字符串str1赋值

str1.assign( str2 size);  用str2的开始num个字符为字符串str1赋值

str1.assign(num,character);  用num个字符character为字符串赋值.

注意,下标从零开始!!!

6.5.2 字符串串接

第一种方式:直接加,如,str3 = str1 + str2; 或, str3 += " some charactors ";

第二种方式:添加文本函数(append)

str3.append("some charactors");  在字符串str3的末尾添加some charactors

str3.append(str1,index,len);  在字符串str3的末尾添加str中以index下标开始,长度为len的子串

str3.append(num,ch);  在字符串的末尾添加num个字符ch

6.5.3 字符串长度,字符串索引和子串

字符串长度: int  len =str1.length( );

字符串索引:可以用at()函数访问,防止越界。例如:str1.at ( 0 ) = 'A' ; 或 str1.at ( len1 - 1 ) = 'H' ;

类似的,at()也可以用于字符串输出 for ( int i = 0 ; i < len1 ; i++ )  cout << str1.at( i ) << ' ' ;

字符串子串函数(substr)

str1.substr(index,num)返回本字符串的一个子串,从index开始,长num个字符。

备注:如果没有指定,将是默认值 string::npos(string::npos参数 —— npos 是一个常数,用来表示不存在的位置.)

也就是说,substr()函数将简单的返回从index开始的剩余的所有字符。

6.5.4  字符串替换,删除,插入和空字符串

replace()、erase()、insert()

字符串替换函数replace( )

str1.replace( index1,  num1, str2, index2, num2 );

用st2r中的num2个字符(从index2开始)替换字符串中str1的字符,从index1开始,最多num1个字符

str1.replace( index, type num, str2 );

用str2中从index开始的num个字符替换本字符串中的字符,

字符串删除erase( )

str1.erase(pos) 删除pos指向的字符, 返回指向下一个字符的迭代器

str1.erase(start,end) 删除从start到end的所有字符, 返回一个迭代器,指向被删除的最后一个字符的下一个位置

str1.erase()删除str1中的所有内容

可以参考:C++ 中string.erase() 的用法_Scott_dingg的博客-CSDN博客_string.erase

字符串插入insert()

str1.insert(index1,str2,index2,num);在字符串str1下标index1处,插入字符串str2从index2开始,长num个字符的子串

str1.insert(index,str2);在字符串str1下标index处,插入字符串str2

空字符串empty( )

str1.empty()返回值为true,说明是str1空字符串;反之,返回false则说明不是空字符串

6.5.5字符串查找

p = str1.find("some characters"); 返回some characters在字符串中第一次出现的第一个字符的下标,如果没找到则返回-1

p = str1.rfind("some characters"); 从右往左逆向查找some characters在字符串中最后一次出现的位置

p = find_last_of(); 查找最后一个与value中的某值相等的字符

p =find_first_of(); 查找第一个与value中的某值相等的字符

p =find_first_not_of(); 查找第一个与value中的所有值都不相等的字符

p = find_last_not_of(); 查找最后一个与value中的所有值都不相等的字符

6.5.6字符串比较

可以直接用opertors比较,如 ==,!=,<=,>=,<,>

6.5.7字符串插入

cin>>str; 用于读入一个单词到string类型的变量中

getline(cin,str); 用于从输入流cin中读取一行到string类型的变量str中

6.5.8字符串拷贝

str1.copy(str2,len); 将字符串str2复制到字符串str1 中,并覆盖 str1原始字符串

str1.copy(str2,num,index);函数拷贝自己的num个字符到str中(从索引index开始),返回值是拷贝的字符数

str1 = str2;直接用str2给str1赋值


字符串终于完结,真的好多啊555555·~

最新文章

  1. centos6.7下安装mvn 、安装elasticsearch下ik分词
  2. svn import-纳入版本控制
  3. Java StringBuilder 高性能用法总结
  4. UI1_ViewController视图切换及Appdelegate
  5. [topcoder]IncrementAndDoubling
  6. 认识linux权限
  7. leetcode Same Tree python
  8. 201521123018 《Java程序设计》第13周学习总结
  9. wordpress 图片上传冲突
  10. vue轮播图中间大两头小
  11. Python内置函数(51)——property
  12. mybatis(入门级项目)
  13. java中的抽象类的作用
  14. eclipse打断点调试进入到class文件中,不显示变量值的解决办法汇总
  15. C#:文件夹匹配
  16. Result映射成对象和List
  17. ASP.NET中使用jQuery插件实现图片幻灯效果
  18. lambda 2
  19. Illegal modifier for parameter userMapper; only final is permitted
  20. 三个大数据处理框架:Storm,Spark和Samza 介绍比较

热门文章

  1. openlayer路线箭头
  2. 【转载】【zabbix】自定义监控项key值
  3. [强网杯2019]upload buuoj
  4. Linux小工具的应用,grep,sort,wc,cut
  5. 工作小记:企业微信 嵌H5页面 用户权限获取匹配
  6. SerialPort-4.0.+ 使用说明(Java版本)
  7. 通过源码了解Java的自动装箱拆箱
  8. FreeRTOS --(10)任务管理之任务延时
  9. SpringBoot中异常处理
  10. kernel UAF &amp;&amp; tty_struct