
noi题库
-
2023年2月12日发(作者:)String字符串类型(⼀)
c++字符串处理——string类型
1、字符概述
2、string声明1、string字符串变量;2、初始化为空字符串
初始化1.赋值初始化(=)2.成员函数初始化()
赋值1、⽀持赋值语句=2、()成员函数相同
输⼊输出1、输⼊:cin>>、getline(cin,s)2、输出cout
字符串长度()2、字符串的实际长度
字符串提取1、下标运算符[](开始位置i,提取⼦字符串长度len)
字符串查找(查找字符串)2、找到,返回下标位置;没有找到,返回-1(string::npos)
字符串增加1.初始体化2、+=复合赋值运算符3、(字符串变量或)(位置,⼦符串)
字符串减少1、(位置,长度)
字符串替换e(位置、长度,替换字符串)
字符串排序
⼀、string字符串概述
1、字符串以’0’为结束标志。
2、string类型变量的字符串长度是任意长,但受计算机内存限制。
⼆、string类型的声明
1、头⽂件:#include.
2、string变量声明:string变量名
3、string类型变量的字符串长度是任意长,但受计算机内存限制。
//string类型声明
#include
#include//string类型不是内置类型
usingnamespacestd;
intmain(){
stringname;//string是数据类型;
cout<<\"inputname:\";
cin>>name;
cout<<\"mynameis\"< return0; } 三、string类型的初始化 1、赋值形式:strings=“c++\"; 2、⼩括号形式:strings(“c++”); 3、⼩括号形式双参数:初始化多个相同字符strings(10,”*“); 四、string类型赋值:= 1、赋值字符串常量:strings;s=“c++\"; 2、赋值字符串变量:stringst1,st2=\"c++\";st1=st2; 五、string类型的输⼊和输出 (⼀)输⼊: 1、cin输⼊:(1)空格、Tab、换⾏等空⽩是分隔符,视为⼀个字符串输⼊结束 (2)忽略导⼊空⽩符。 (3)cin>>输⼊对最后空⽩符:读取继续保留在输⼊流,等待输⼊。 (4)在读⼊字符串结束时添加字符串结束标识‘0’. /*过滤多余的空格(NOI题库)。 ⼀个句⼦中也许有多个连续空格,过滤掉多余的空格,只留下⼀个空格。 输⼊格式:1⾏,⼀个字符串(长度不超过200)。句⼦头和尾都没有空格。 输出格式:过滤之后的句⼦ 输⼊样例:clanguage. 输出样例:clanguage. */ #include #include usingnamespacestd; intmain(){ strings,stemp; cin>>s; while(cin>>stemp) //⼤多数情况下其返回值为cin本⾝(⾮0值),只有当遇到EOF(⽂件结束标志)输⼊时,返回值为0。 //输⼊EOF的⽅法,windows下输⼊ctrl+z,Linux下输⼊ctrl+d { s+=\'\'+stemp;//string赋值、+运⾏ } cout< return0; } 2、读取⼀⾏字符串:getline(cin,变量名) (1)getline(cin,变量名)允许读取⼀⾏且含有空格,默认为换⾏符结束。 (2)getline函数对换⾏符操作:读取⽽且丢弃,不保留输⼊流中,也不保存在字符串中。 (3)注意cin>>输⼊时残留在输⼊流的回车符。 /*统计数字字符个数(NOI题库). 输⼊1⾏字符,统计出其中数字字符的个数。 输⼊格式:1⾏字符串,总长度不超过255. 输⼊出格式:输出为1⾏,输出字符串⾥⾯数字字符的个数。 输⼊样例:PekingUniversityissetupat1898. 输出样例:4 */ #include #include usingnamespacestd; intmain(){ strings; getline(cin,s); intans=0; for(inti=0;i<();++i) //()是string的成员函数,返回字符串的长度不包括字符串标志 { if(\'0\'=s[i])ans++; } cout< return0; } (⼆)输出: 使⽤cout输出,例⼦参照本⽂。 六、string类型的常⽤成员函数 (⼀)提取字符串单个元素或⼦字符串 1、单个字符提取:使⽤下标[]运算符,进⾏个字符的提取。 2、连续⼦字符串的提取:使⽤成员函数(提取开始位置i,提取长度len); /* 摘录⽂字。输⼊1⾏由字母和字符“#”组成的字符串。保证“#”出现偶次。 从前向后看,每两个“#”字符之间的字符串是要摘录的字字。请编程把摘录的字符串连续输出。 输⼊格式:1⾏字符串,总长度不超过100000. 输出格式:“#\"号对之间的字符 输⼊样例:a#abcd#xyz#efgh#opq. 输出样例:abcdefgh */ #include #include usingnamespacestd; intmain(){ stringst,outst; intp; cin>>st; for(inti=0;i<();i++) { if(st[i]==\'#\') { p=i+1; for(i++;st[i]!=\'#\';i++);//没有循环体,改变i++值 outst+=(p,i-p); } } cout< return0; } `` ###(⼆)查找字符串 1、成员函数(字符串)返回⼦字符串出现的位置(下标),没有找到则返回-1(⼀般写成string::npos)。 ```cpp /* 选择你喜爱的⽔果(NOI题库) 程序中保存了七种⽔果的名字,要求⽤户输⼊⼀个与⽔果有关的句⼦。程序在已存储的⽔果名字中搜索, 是否包含七种⽔果的名称。如果包含,则⽤”Brusselssprouts“替换,并输出替换后的句⼦。若没出现,则输出 \"Youmustnotenjoyfruit\". 假设七种⽔果的名字为:apple,bananas,peaches,cherries,pears,orange,strawerries. 输⼊格式:多⾏,每⾏是⼀个字符串,只会出现⼀种⽔果名称,且出现⼀次。 输出格式:被替换过的句⼦。 输⼊样例: Ireallylovepeachesonmycereal. I\'dratherhaveacandybar applesarewonderfulwithlunch 输出样例: IreallyloveBrusselssproutsonmycereal. Youmustnotenjoyfruit. Brusselssproutsarewonderfulwithlunch. */ #include #include usingnamespacestd; stringfruits[]={\"apples\",\"bananas\",\"peaches\",\"cherries\",\"pears\",\"oranges\",\"strawberries\"}; intmain(){ strings; while(getline(cin,s)){ intpos,id=-1; for(inti=0;i<7;i++) { pos=(fruits[i]); if(pos!=string::npos) { id=i;break; } } } if(-1==id) cout<<\"Youmustnotenjoyfruit.\"< else { e(pos,fruits[id].size(),\"Brusseslssprouts\"); cout< } } return0; } ###(三)字符串增加 1、字符串“+”运算符:连接两字符串,但必须字符串变量参与(其中⼀个必须是string变量)。 2、字符串“+=”复合赋值运算符: 3、s(插⼊位置,插⼊字符串):在字符串当中位置插⼊字符串。 4、(插⼊字符串):在字符串后⾯追加⼦字符串 #include #include usingnamespacestd; intmain(){ strings=\"22\"; (1,\"+\"); (\"=4\"); cout< return0; } 运算结果为:2+2=4 (四)字符串减少 1、(开始删除字符位置,删除字符长度len) #include #include usingnamespacestd; intmain(){ stringst=\"Mynamenameishipoole.\"; (2,5); cout< return0; } (五)字符串替换 e(替换开始位置,替换长度len,替换⼦符串):是成员函数,是删除字符串和播放字符串复合操作。