转载自百度经验 :https://jingyan.baidu.com/article/20b68a8854f919796dec6265.html?qq-pf-to=pcqq.c2c

string类的常用方法有哪些。string查找替换、分割字符串、比较、截取、类型转换、排序等功能都提供了强大的处理函数,可以代替字符数组来使用。

1. 定义和构造初始化

string 提供了很多构造函数,可以以多种方式来初始化string字符串

#include <iostream>
#include <string>
#include <stdio.h>
using namespace std;
int main()
{string str1="yesterday once more";string str2 ("my heart go on"); // = day once morestring str3(str1,6);            //= daystring str4 (str1,6,3);char ch_music[]= {"Roly-Poly"};string str5 = ch_music;string str6 (ch_music);string str7 (ch_music,4); //= Rolystring str8(10,'i');     // = iiiiiiiiistring str9 (ch_music + 5,ch_music + 9);//= Polystr9.~string();         // 销毁字符,释放内存getchar();return 0;
}

2.赋值,拼接字符串

string重载了 =  +   +=  等多种运算符,让字符串组合拼接更简单。

#include <iostream>
#include <string>
#include <stdio.h>
using namespace std;
int main()
{string str = "A woman appreciates ";string str2 = " a man who can make her laugh";string strlove = str + str2;cout << strlove <<endl;str += str2;cout  << str <<endl;str.push_back('.');str.append("阿拉丁");  //通过在其当前值的末尾附加附加字符来扩展字符串:str.assign("dreams come true ");  //重新赋值str.insert(16,"!!!!"); //在指定位置插入字符cout << str <<endl;return 0;
}

3.访问字符操作

string可以按数组方式,以下标来访问。还可以用at()函数访问指定的字符。

#include <iostream>
#include <string>
#include <stdio.h>
using namespace std;
int main()
{string strip4 = "iPhone4";cout << strip4[2];      // = hcout << strip4.at(5);   // = estring stuff;getline(cin, stuff);    //输入一行字符,赋值给stuff//输入一样字符,赋值给stuff, 以! 结束getline(cin, stuff, '!');cout << stuff;getchar();return 0;
}

4.可以使用 STL 的接口

可以把 string 理解为一个特殊的容器,容器中装的是字符

#include <iostream>
#include <string>
#include <stdio.h>
#include <algorithm>
using namespace std;
int main()
{string str;str.push_back('Q');str.push_back('A');string::iterator itstr = str.begin();for (; itstr != str.end(); itstr++ ){cout << *itstr;}sort (str.begin(), str.end()); //排序 要头文件algorithmstr.pop_back();getchar();return 0;
}

5.比较操作 ==  !=  >  >=  <  <=  compare 等

string的比较操作,按字符在字典中的顺序进行逐一比较。在字典前面的字符小于后面的字符。

#include <iostream>
#include <string>
#include <stdio.h>
#include <algorithm>
using namespace std;
int main()
{string str = "hehe";if (str < "hello"){cout << "hehe 小于 hello" << endl;}string str2 = "anhui";string str3 = "hunan";string str4 = "nanjing";if (str2 >=str3 || str2 ==str4){cout << "安徽-南京-湖南";}str2.compare("anhui"); //相等str2.compare("str3");  //相等返回0 大于返回正数, 小于返回负数str3.compare(3,2,str4,2,2); //na比较njcout << str4.compare(3,4,"jing",4); //jing == jing 输出0getchar();return 0;
}

6.查找 find  rfind

string中除了find、rfind,还有find_first_of等函数也提供了强大的查找功能。

#include <iostream>
#include <string>
#include <stdio.h>
#include <algorithm>
using namespace std;
int main()
{string str = "when i was young, i listen to the radio. ";string::size_type position;//find 函数返回listen 在str中第一次出现的下标位置position = str.find("listen");if (position != str.npos) //如果没找到,返回npos, 这个值很大4294967295{cout << "第一次出现的下标是:" << position <<endl;}//从字符串str 下标 9 开始,查找字符串 you, 返回 you 在 str 中的下标position = str.find("you", 9);cout << "str.find(you,9) is: " << position <<endl;string substr = "i";position = 0;int i = 1;while ((position = str.find_first_of(substr,position)) != string :: npos){//查找 str 中substr出现的位置cout << "position "<<i++<<" :" <<position <<endl;position++;}string flag = "to";position = str. rfind(flag); //反向查找flag 在 str 中最后出现的位置cout << "str.rfind(flag) : " <<position <<endl;getchar();return 0;
}

7.除了string中的find函数外,char[]数组也有强大的查找函数

C++中有strstr、strchr等也有查找功能。函数说明如下

char *strstr( const char *str, const char *substr );  返回指针,指向substr在字符串str中首次出现的位置。

char *strchr( const char *str, int ch );  返回指针,指向 str 中字符ch 首次出现的位置。

#include <iostream>
#include <string>
#include <stdio.h>
using namespace std;
int main()
{char str[] = {"keep your decide in mind, not change except for your parents. "};char *psubstr = "your";char *p = strstr(str,psubstr); //如果没找到, 返回NULLif (p){cout << "找到了字符串, 下标为:" << p->str <<endl;}p = strchr(str, 'f');// 如果没找到 返回NULLif (p){cout << "找到了字符串, 从该字符开始的字符串为 " << p <<endl;}p = strrchr(str, 'e');// 如果没找到 返回NULLif (p){cout << "找到了字符串, 从该字符开始的字符串为 " << p <<endl;}getchar();return 0;
}

8.与 char[ ] 的相互转换

copy(),返回指针,赋值给char[ ]数组名

c_str() ,返回 const 类型的指针

data() ,将内容以字符数组的形式返回

#include <iostream>
#include <string>
#include <cstring>
#include <stdio.h>
using namespace std;
int main()
{char strch[] = {"shrimp"};string str = strch; //char[]可以直接赋值给stringcout<<str<<endl;str = "fish";strcpy(strch, str.c_str());cout << strch <<endl;str = "duck";str.copy(strch,str.length(),0);//可指定拷贝的位置和字符的个数cout << strch <<endl;str = "chicken";strcpy(strch, str.data());  //data()返回指向自己的第一个字符的指针cout << strch <<endl;getchar();return 0;
}

9.与 char[ ] 的相互转换

copy(),返回指针,赋值给char[ ]数组名

c_str() ,返回 const 类型的指针

data() ,将内容以字符数组的形式返回

#include <iostream>
#include <string>
#include <cstring>
#include <stdio.h>
using namespace std;
int main()
{char str[] = "a,b, c,d*e flower";const char*split = ",*";  //以【空格 ,*】三个字符来分割char *p;p = strtok (str, split);while (p != NULL){cout << p <<"\n";p = strtok(NULL,split);}string city = "nanjingshanghai";string strsh = city.substr(7,8); //提取子串cout << strsh;getchar();return 0;
}

10.string 大小分配函数

capacity() ,返回容器在它已经分配的内存中可以容纳多少元素

resize(Container::size_type n),强制把容器改为容纳n个元素

#include <iostream>
#include <string>
#include <cstring>
#include <stdio.h>
using namespace std;
int main()
{string str = "spring-sumper-autumn-winter";int isize = str.size();     //容器中有多少元素  27int lenth = str.length();   //和size函数功能相同  27int maxsize = str.max_size();//字符串可能的最大大小 1073741820//在不重新分配内存的情况下,字符串可能的大小int cpsize = str.capacity(); //容器在它已经分配的内存中可以容纳多少元素 27if(str.empty()) //判断是否为空{cout << "字符串为空!";}//提前预留一定容量大小,避免多次容量扩充操作符导致效率低下str.reserve();str.resize(2014);       //强制把容器改为容纳n个元素cout<< str.length() << endl;getchar();return 0;
}

11. string 中的字符替换、删除操作

#include <iostream>
#include <string>
#include <cstring>
#include <stdio.h>
#include <algorithm>
using namespace std;
int main()
{string str = "standard lover";string str2 = "gates of down";str.swap(str2); //交换cout << str << endl;string strtemp = "OF";str.replace (6,strtemp.length(), strtemp); //替换字符串 有多种形参格式cout << str << endl;str.erase(); //删除 index = 2, 长度为 4 的字符串cout << str << endl;str.erase();    //删除整个字符串str2.clear();   //清空字符容器中所有的内容getchar();return 0;
}

了解更多关于string函数的用法:http://www.cplusplus.com/reference/string/string/append/

C++中String 的用法 string 字符串的使用方法相关推荐

  1. python类定义中、对象字符串的特殊方法是_python中自定义类对象json字符串化的方法_python json转字符串、...

    python中自定义类对象json字符串化的方法 1. 用 json 或者simplejson 就可以 2.定义转换函数: def convert_to_builtin_type(obj): prin ...

  2. java字符串的用法_Java字符串的重要方法的使用实例

    String类将是您存储和处理语言的主要工具之一,本篇文章将带领大家对Java字符串的方法有个基础的认识,了解他的功能使用方法. 本文摘自千锋教育编著的<Java语言程序设计>,如需转载请 ...

  3. python isnumeric函数用法_Python 字符串 isnumeric() 使用方法及示例

    Python 字符串 isnumeric() 使用方法及示例 如果字符串中的所有字符均为数字字符,则isnumeric()方法将返回True.如果不是,则返回False. 数字字符具有以下属性:Num ...

  4. 计算机中sumif函数的使用方法,WPS中sumif函数用法与模糊条件使用方法

    WPS表格的SUMIF函数功能:对满足条件的单元格进行求和,SUMIF函数总共三个参数分别是区域,条件,求和区域. 区域:指的是用于条件判断的单元格区域: 条件:不用解释了吧,如果是等于直接写文本或者 ...

  5. T-SQL中REPLACE的用法_字符串替换

    REPLACE 用第三个表达式替换第一个字符串表达式中出现的所有第二个给定字符串表达式. 语法 REPLACE ( 'string_expression1' , 'string_expression2 ...

  6. getbytes方法_关于C#中识别和查找中英文字符串的解决方法和字符串处理方式的笔记...

    今天更新公司内部插件的时候遇到一个问题,就是需要识别一个字符串是中文还是英文,如果字符串中不存在中文字符就要用另一种方法处理.因为以前在学校的时候就没学好C语言和C++的字符串处理,再加上字符串不怎么 ...

  7. python中append的用法_Python 列表 append() 使用方法及示例

    Python 列表 append() 使用方法及示例 append()方法将一个项目添加到列表的末尾. append()方法将单个项目添加到列表的末尾. append()方法的语法为:list.app ...

  8. python中ans的用法_python cx_Oracle基础使用方法

    问题 使用python操作oracle数据库,获取表的某几个字段作为变量值使用. 使用Popen+sqlplus的方法需要对格式进行控制,通过流获取这几个字段值不简洁(个人观点--).(优点是能够使用 ...

  9. mysql查询包含字符串的记录,MYSQL中利用select查询某字段中包含以逗号分隔的字符串的记录方法...

    首先我们建立一张带有逗号分隔的字符串. CREATE TABLE test(id int(6) NOT NULL AUTO_INCREMENT,PRIMARY KEY (id),pname VARCH ...

最新文章

  1. 面试官,你考我那么多基础知识干什么?
  2. mac wmware 无网络_无线网络中常用的技术名词
  3. matlab图像隐写,matlab软件图像处理相关内容.ppt
  4. 消息中间件学习总结(4)——RocketMQ之RocketMQ 迈入50万TPS消息俱乐部
  5. 深入浅出node.js第9章玩转进程摘录
  6. 南华大学计算机科学学院,南华大学计算机科学与技术学院介绍
  7. 如何使用navicat premium打开外部.sql文件
  8. 微信视频号头像怎么换?怎么设置?必看!5个思路帮你快速敲定头像
  9. “数据”企业之命脉,守护有责。
  10. 大数据处理算法--Bloom Filter布隆过滤
  11. 由于找不到libmysql.dIl, 无法继续执行代码。重新安装程序可能会解决此问题
  12. 企业信用报告可用网银自助查询
  13. 240. 搜索二维矩阵 II
  14. gddr6速率_美光发布GDDR6X显存,号称速度世界最快
  15. VMware虚拟网卡导致物理机浏览器DNS解析慢_浏览器正在解析主机
  16. vscode主题颜色设置为light,代码颜色花里胡哨
  17. 对射式红外传感器模块、测速传感器模块、计数器模块、电机测试模块、槽型光耦模块
  18. Gitee【代码托管】详细教程
  19. 2021美赛B题论文第一篇
  20. 心灵的程序:佛学与计算机

热门文章

  1. 数据结构-复杂度(一)
  2. 用PPT制作圣诞节贺卡的方法
  3. 小程序不再小,已成为各大平台的必争之地
  4. 强者都在示弱,弱者都在逞强!
  5. 都说测试行业内卷严重,环境恶劣,那么未来测试行业会如何发展?
  6. CSS----transform:rotate 旋转基本使用方法
  7. 【学习日记】突发奇想
  8. MCGS触摸屏设备地址修改-RS485
  9. 数仓数据处理与数据流向
  10. 嵌入式数据库(Embedded Database)