当前位置: 首页 > news >正文

「string」笔记

参考:比特鹏哥

1. string

string是一种类型,指的是字符串,比字符数组更高级

头文件  <string>

#include <string>int main()
{string a;//未初始化string b = "good good";//初始化string c("good sfternoon");//初始化return 0;
}

可以直接把b中的字符串赋给c

eg. b = c;

①没有‘\0’作为结束标志

②每个元素都有下标,与字符数组类似,都从零开始

2. 输入

①cin

不能输入带有空格的字符串

②getline

头文件<string>

两种形式,能输入带有空格的字符串

#include <string>int main()
{
①getline(cin,字符串名字);
②getline(cin,字符串名字,截至符号);
return 0;
}

①cin:从键盘输入;字符串名字:输入的数据放入到的字符串;到‘\n’停止(不包含‘\n’)

②cin:从键盘输入;字符串名字:输入的数据放入到的字符串;截至符号:可以自定义停止符号(到其停止,不包含‘它’)

3. 计算string类型字符串长度 size()

#include <iostream>
#include <string>
using namespace std; int main()
{string b = "dddd  sss";cout << b.size() << endl;return 0;
}

格式名:数组名.size()

4. 迭代器(iterator)

类似于指针,是一种对象。访问迭代器指向的值,需要解引用(*)

头文件 <string>

begin()与end()

string中的begin()与end()返回迭代器的类型:string :: iterator(用于作为其变量名的类型)

①begin():返回第一个字符所处的位置

②end(): 返回最后一个字符的下一个位置(此位置不属于字符串)

#include <iostream>
#include <string>
using namespace std;int main()
{string str = "holle world!";//迭代器的使用string::iterator it = str.begin();string::iterator it1 = str.end();cout << *it << endl;//解引用操作cout << *(--it1) << endl; return 0;
}

这两个迭代器可以加或减某个数,也可相减,所以也可以用这两个迭代器逐个输出字符串

注意,相减只能分别定义再相减,定义一个变量一起减会报错:

	//正确string::iterator it1 = str.end();string::iterator it2 = str.begin();cout << it1-it2 << endl;  //错误string::iterator it = str.end() - str.begin();string::iterator迭代器中没有str.end() - str.begin()这种类型

5. push_back()   末尾添加一个

用于在字符串末尾添加一个字符

头文件 <string>

#include <iostream>
#include <string>
using namespace std;int main()
{string s;s.push_back('a');return 0;
}

 

6. pop_back()     末尾删去一个

删除字符串最后一个字符。如果是空字符还要删去,则会出错。

#include <iostream>
#include <string>
using namespace std;int main()
{//一个一个删去 string s = "hello word!";s.pop_back();cout << s << endl;s.pop_back();cout << s << endl;//循环删去 string s = "hello word!";for(int i = s.size();i>=0;i++){s.pop_back();cout << s << endl;}return 0;
}

7. insert() 中间插入字符或字符串

在字符串中间某位置前插入字符或字符串

头文件  <string>

①变量名.insert(插入位置的下一个位置,插入的字符串);
②变量名.insert(插入位置的下一个位置,插入字符的数量,插入的字符);

8. +或+=操作

本质:string重载了operator操作符

9. find() 查询字符/字符串位置

头文件 <string>

寻找某一字符或字符串在另一字符串中位置,从所设定的初始位置开始(默认为零,从第一位开始寻找)。找到,返回该字符或字符串第一次出现的起始下标位置;未找到,返回npos(-1)

size_t 变量名 接收find()的返回值

①string类型变量名.find("字符串"/'字符'/另一个string类型变量名,(可不写,默认从零开始)开始查询位置);

#include <iostream>
#include <string>
using namespace std;int main()
{string s("good morning evergone! evergone? everyone!");//字符size_t n = s.find('o');cout << "查找o:" << n << endl;n = s.find('o',8);cout << "查找o第8位之后:" << n << endl;//字符串// 1 "dfe2wef"size_t n1 = s.find("on");cout << "查找on:" << n1 << endl;n1 = s.find("on",21);cout << "查找on第21位之后:" << n1 << endl;// 2 string strstring str = "rgo";size_t n2 = s.find(str);cout << "查找rgo:" << n2 << endl;n2 = s.find(str,20);cout << "查找rgo第20位之后:" << n2 << endl;return 0;
}

②string类型变量名.find("字符串",开始查询位置,要查询字符的长度);

验证是否找到:

10. substr() 截取字符

头文件 <string>

截取字符串中指定位置指定长度的子串

string类型变量名.sbustr(pos,len);
//pos:默认为0,从第0位开始截取,可设定截取位置
//len:默认npos,一直截取字符串直到末尾,可设定截取长度
#include <iostream>
#include <string>
using namespace std;int main()
{string s = "qwerty uijkolpd sunhsdns.";string t;cout << "初始t:" << endl; //①s.substr()t = s.substr();cout << "不加参数:" << t << endl;//②s.substr(pos)t = s.substr(4);cout << "pos:" << t << endl;//③s.substr(pos,len)t = s.substr(4,6);cout << "pos,len:" << t << endl; return 0;} 

11. 关系运算

'==','!=','>','<','>=','<='也同样适用于string类型的字符串进行比较,或者比较string类型和C语言风格字符串,但比较的两者中至少要有一个string类型的字符串

比较的不是字符串的长度,而是相对位置字符的ascall码值

#include <iostream>
#include <string>
using namespace std;int main()
{string s;string t;//输入 getline(cin,s);getline(cin,t);//比较 if(s>t) cout << "s>t" << endl;else if(s == t) cout << "s==t" << endl;else cout << "s<t" << endl; return 0;
}

12. string类型字符串与数值的转换

①字符串转数值

数值均转成十进制

stoi()/stol()  stod()/stof()

头文件 <string>

1.1 实际上是把数值字符转换成数值,从第一个字符开始,遇到不符合要求的字符为止

1.2 stoi() 把字符串转换成int类型

     s--string to--转换成 i--int类型;

     以此类推,另外三个,l--ling long int类型;  d--double类型;  f--float类型;

1.3 格式

eg. stoi(string类型变量名,㈠接收不符合要求的字符的位置的变量的地址,㈡字符串中数值进制格式);

   ㈠接收不符合要求的字符的位置的变量的地址

     ⑴ 要用 size_t 变量名 来接收不符合要求的字符的位置

          这个东西实际上就是告诉我们,这串字符到第几位无法转换成数值了

     ⑵ 也可以不设置,直接写成NULL0

#include <iostream>
#include <string>
using namespace std;int main()
{string s = "01011aa9;9";size_t pow;int t = stoi(s,&pow);//默认值为十进制 cout << "t: " << t << endl;cout << "(一)pow:" << pow << endl; return 0;
}

   ㈡字符串中数值进制格式

     ⑴ 不写,默认为字符串中字符为十进制形式

     ⑵ 若为2,则认为字符串中字符二进制形式,并且会被转成十进制形式输出,8,16也是如此

     ⑶ 若为0,则程序会猜测字符串中字符的进制形式,比如,若为0开头,会被认为是八进制;若            为0x开头,则会被认为是十六进制

②数值转字符串

to_string()就是把数值转换成string类型字符串

整型,浮点型都是可以使用

头文件 <string>

另:

1. isspace() 判断一个字符是否为空白字符

头文件 <cctype>

空白字符:空格和换行符

//统计除空白字符外的字符串个数 
#include <iostream>
#include <string>
#include <cctype>
using namespace std;int main()
{string s;//输入 getline(cin,s);//统计 int t=0;for(auto e : s){if(isspace(e))//遍历s中是否有字符为空白字符 continue;else t++;//统计除空白字符外的字符串个数} //输出 cout << t << endl;return 0;
}

2. reverse 字符串的逆序

void reverse(要反转字符串的第一个元素地址(迭代器),要反转字符串的最后一个元素地址(迭代器));

头文件 <algorithm>

 

 

 

 

 


http://www.mrgr.cn/news/93915.html

相关文章:

  • 优选算法系列(1. 双指针_上)
  • Trae IDE:解锁 AI 驱动的高效编程体验
  • [Java]使用java进行JDBC编程
  • 【追根溯源】在数电中脉冲波形的产生和整形电路
  • 数学之快速幂-数的幂次
  • el-pagination的使用说明
  • 【解决哈希冲突】
  • vscode带参数调试
  • starrocks如何配置多个hive数据源,其中一个是kerberos认证
  • JavaScript中的生成器函数详解
  • 【CSS3】金丹篇
  • 微信小程序,自定义导航栏,搜索框滚动,搜索框过渡,滚动吸顶,吸顶导航栏,过渡动画,自定义tabbar
  • 【14】单片机编程核心技巧:整除运算与数位提取
  • VSCode 2025最新前端开发必备插件推荐汇总(提效指南)
  • Mac如何查看 IDEA 的日志文件
  • vulnhub靶场【digitalworld.local系列】的electrical靶机
  • OpenManus-通过源码方式本地运行OpenManus,含踩坑及处理方案,chrome.exe位置修改
  • 用python和Pygame库实现“跳过障碍”游戏
  • 从0开始的操作系统手搓教程33:挂载我们的文件系统
  • 若依RuoYi-Cloud-Plus微服务版(完整版)前后端部署