✅ 操作成功!

noi题库

发布时间:2023-06-04 作者:admin 来源:文学

noi题库

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,替换⼦符串):是成员函数,是删除字符串和播放字符串复合操作。

👁️ 阅读量:0