CSP2019考前字符串基础知识整理

一.string类

1.string的初始化

将string str 赋值为空:

string str="";
string str;
str.clear();

或赋值为其他字符串:

string str1="absba";
string str2("lqyz");
string s(num,"c");//生成一个字符串,包含num个"c"字符

2.string的遍历

获取第j位置的字符:char ch=str.at(j) 或者是:char ch=str[j]

for(int i=0;i<(int)str.length();i++)
  cout<<str[i]<<"\n";

for(int i=0;i<(int)str.length();i++)
  cout<<str.at(i)<<"\n";

3.string的连接

1.string内部已经重载好了"="运算符(没有"-"/"*"等运算),即我们可以直接对两个字符串进行相加:

string s1="lqyz",s2="csprp++";
string s3=s1+s2;
cout<<s3;//输出结果:lqyzcsprp++
string s1="lqyz";
s1+="csprp++";
cout<<s1;//输出结果:lqyzcsprp++

2.我们还可以使用string内部的append函数来进行连接:

将s2连接至s1尾部:s1.append(s2)   此时s2没有变化,s1变为了原来的s1与s2相连成字符串:

string s1="lqyz",s2="csprp++";
s1.append(s2);
cout<<s1<<" "<<s2;//输出结果:lqyzcsprp++ csprp++

3.string的查找

1.find()函数

find()函数可以直接查询一个或一段字符首字符出现的第一个位置的下标,如果没有询问到,函数会返回-1:

string str="abskuaebsk";
int a=str.find("bsk");
int b=str.find("ak");
cout<<a<<" "<<b;//输出结果:1 -1

find()函数还可以查询一个指定位置之后的一个或一段字符首字符出现的第一个位置的下标:find("abc",5):在下标5(包括5)之后查询abc首字符a首次出现的位置的下标

string str="abskuabebsk";
int a=str.find("a",5);
int b=str.find("a",6);
cout<<a<<" "<<b;//输出结果:5 -1

2.rfind()函数

使用方法与find()函数类似,只是rfind()函数从后往前进行查询,返回值为这一段字符的首字符的下标

常用它们两个来判断该子串是否唯一:如果返回值相同则说明唯一,否则子串不唯一

string str="abskuabebsk";
int a=str.find("ab");
int b=str.rfind("ab");
cout<<a<<" "<<b;//输出结果:0 5

4.string的删除(erase()函数)

1.erase(i,n); 删除从i开始的n个字符(i为int类型的数字)

str="abskuabebsk";
str.erase(0,2);//删除从下标0开始(包括0)的两个字符
str.erase(3,2);//删除新串的从下标3开始(包括3)的两个字符
cout<<str;//输出结果:skuebsk

2.erase(i);删除下标i之后的所有字符(此处i为int类型的数字)

str="absfuabebak";
str.erase(6);//删除下标为6(包括6)之后的所有字符
cout<<str;//输出结果:absfua

3.erase(i);删除i位置的字符(注意此处i为string类型的迭代器,而不是int类型的数字,要与2区分)

str="abskuabebsk";
str.erase(str.begin());//删除str[0](首字符)
str.erase(str.begin()+7);//删除新串中的str[7],即原串中的str[8]
str.erase(str.end()-1);//删除新串中的倒数第一个字符
cout<<str;//输出结果:bskuabes 

切记一定不要写成以下形式:

str="abskuabebsk";
str.erase(1);//因为括号中应是个string类型的迭代器,这样写是错误的
str.erase(7);
cout<<str;

4.erase(first,last);删除从first到last之间的字符(first和last都是迭代器)

注意此处删除的为[first,last)区间的元素,不包括first,不包括last

str="absfuabebak";
str.erase(str.begin()+3,str.end()-1);//删除区间:[3,10)的元素
//此语句相当于str.erase(str.begin()+3,str.begin()+10);
//即删除区间包括左而不包括右
//注意str.end()-1指的是最后一个元素
cout<<str;//输出结果:absk

5.插入字符

1.在尾部增加字符,函数有 +=、append()、push_back()(只能加入单一字符)

str+="abs";
str.append("abs");
str.push_back(‘a‘),str.push_back(‘b‘),str.push_back(‘s‘);
//三种表达形式效果相同

2.insert()函数

str.insert(1,"hello");//在下标为1的位置加入字符串,其余的相对后移
cout<<str;//输出结果:ahellobsgddjk

6.输入输出

1.cin和cout

注意cin读入string字符串时无法读入空格,即遇到空格便停止读入

2.getline()读入一行(可以读入空格)

且getline以读入回车为结束,但它可以单独的读入一行回车

while(getline(cin,str)){
    cout<<str<<"\n";
}

比如上述代码如果一直输入回车,程序不会停止(可以输入Ctrl+Z进行停止循环)

所以应注意:

scanf("%d\n",&n);//此处%d后面必须加一个\n,消除第一行的回车的影响
for(int i=1;i<=n;i++){
    getline(cin,str);
    cout<<str<<"\n";
}

原文地址:https://www.cnblogs.com/KGW-/p/11658207.html

时间: 2024-10-25 19:40:07

CSP2019考前字符串基础知识整理的相关文章

2.1号Java复习题目——Java中的字符串(基础知识整理)

Java中的字符串基础知识 作为程序开发当中,使用最频繁的类型之一,字符串有着与基础类型相同的地位,甚至在 JVM(Java 虚拟机)编译的时候会对字符串做特殊的处理,比如拼加操作可能会被 JVM 直接合成为一个最终的字符串,从而到达高效运行的目的. 1 String 特性 String 是标准的不可变类(immutable),对它的任何改动,其实就是创建了一个新对象,再把引用指向该对象: String 对象赋值之后就会在常量池中缓存,如果下次创建会判定常量池是否已经有缓存对象,如果有的话直接返

Java基础知识整理(一)

概述 公司业务需要,产品既要有.NET又需要Java,没得选择,只能业余时间学习Java,整体觉得Java也.NET还是很相似的,只是语法有差别,差别也不是很大,这就将学习Java的基础知识整理下,以便于自己的学习.作为个.NET程序猿也可以学习Java ,毕竟技多不压身,学习多也要精通. 开发工具 eclipse ,开发java类似.NET 需要装JDK类似.NET Framework. Java开发工具eclipse设置 1.设置字体:window设置: 2.设置快捷键:window--ke

Kali Linux渗透基础知识整理(二)漏洞扫描

Kali Linux渗透基础知识整理系列文章回顾 漏洞扫描 网络流量 Nmap Hping3 Nessus whatweb DirBuster joomscan WPScan 网络流量 网络流量就是网络上传输的数据量. TCP协议 TCP是因特网中的传输层协议,使用三次握手协议建立连接.当主动方发出SYN连接请求后,等待对方回答SYN+ACK ,并最终对对方的 SYN 执行 ACK 确认.这种建立连接的方法可以防止产生错误的连接,TCP使用的流量控制协议是可变大小的滑动窗口协议. 连接建立 TC

perl重点基础知识整理

? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86

[HTTP] 高级基础知识整理

HTTP 高级基础知识 整理 HTTP 高级基础知识,包括 Cookie / Session / localStorage / sessionStorage / Cache-Control / Expires / Etag 等 Cookie cookie :wiki Cookie(复数形态Cookies),又称为"小甜饼".中文名称为"小型文本文件",指某些网站为了辨别用户身份而储存在用户本地终端(Client Side)上的数据(通常经过加密) -wiki coo

DIV+CSS网页布局常用的一些基础知识整理

CSS命名规范一.文件命名规范 全局样式:global.css:框架布局:layout.css:字体样式:font.css:链接样式:link.css:打印样式:print.css: 二.常用类/ID命名规范页 眉:header内 容:content容 器:container页 脚:footer 版 权:copyright 导 航:menu主导航:mainMenu子导航:subMenu 标 志:logo标 语:banner标 题:title侧边栏:sidebar 图 标:Icon注 释:note

JAVA基础知识整理

一.首先先明白get与post的基本定义和区别: 这是两种在客户端和服务器端进行请求-响应的方法. 1get:从指定的资源请求数据. 2post:向指定的资源提交要处理的数据. get基本上用于从服务器取回数据,注意:get方法可能返回缓存数据. post可以从服务器上获取数据,不过,post方法不会缓存数据,并且常用语连同请求一起发送数据. 二. Jquery $.get()方法. $.get()方法通过Http Get发起请求,从服务器上请求数据. 语法:&.get(URL,callback

c语言基础知识整理(二)

C语言的基础知识 对C语言的基础认识: 1.C语言编写的程序称为源程序,又称为编译单位. 2.C语言书写格式是自由的,每行可以写多个语句,可以写多行. 3.一个C语言程序有且只有一个main函数,是程序运行的起点. 4.每个C语言程序写完后,都是先编译,后链接,最后运行.(.c---à.obj---à.exe)这个过程中注意.c和.obj文件时无法运行的,只有.exe文件才可以运行. (程序编辑-程序编译-程序连接-程序运行) 标识符: 1.标识符: 合法的要求是由字母,数字,下划线组成.有其它

[转]基础知识整理

[写在前面]本页面仅涉及基础知识的梳理,比如算法与数据结构,操作系统,数据库,C/C++等,这一块主要是确定性知识,仅有对或者不对之说,可探讨的地方较少,对于找工作的同学会比较有用.对于已工作的同志,可绕过此页面,直接前往“专业知识处理”. 原文地址:http://dongxicheng.org/knowledges-carding/ ————————————————————————————————————————————- 1. 数据结构与算法 1.1 书籍 (1)算法导论 (2)编程之美 (