TheZealous的集训日常之字符串处理(字符串算法的基基基基基础)总结+练习

当年钢哥讲字符串基础操作的时候没怎么好好练,如今被Hash、KMP和Trie树追着打,才追悔莫及,嘤嘤嘤~

所以今天要水一篇博客,总结一下字符串基本操作,顺便捎上ybt字符串处理的题解。


 

在c++中,有两种表示字符串的方法:“char”和“string”.

 

一、char

1.字符串事实上是使用‘\0’终止的一维字符数组。在字符串中,‘\0'作为标识占用储存空间,但不计入串的实际长度。

2.字符串常量是由双引号括起来的一串字符,在表示字符串常量时,无需人为在字符串后加’\0'。

3.用字符数组表示字符串时,不能对字符串直接赋值。

  eg:
     char a[10005];
     a="TheZealous AK NOI"这种写法是不合法的。

4.sscanf和sprintf

  

sscanf(s,"%d",&n)//将字符串s转化为整数n
sprintf(s,"%d",&n)//将整数n转化为字符串s

 

5.输入

  1)单字符:cin、getchar、scanf。

  用法:

char w;
cin>>w;
w=getchar();
scanf("%s",w);

  2)不含空格、换行符的字符串:cin、scanf。

char k[1005];
cin>>k;
scanf("%s",k);

  3)字符串(无论有无空格):gets。

char s[10004];
gets(s);

  除这三种之外,还有一种输入方法:getchar多次输入。

int k=0;
while((s[i]=getchar())!='\n')
{
    i++;
}

 

例题:

洛谷:数字反转(这个代码就不放了,没劲)。

 

二、string

1.头文件

#include<string>

2.用法

string str1//定义一个字符串str1,初始化为空
string str2(str1)//定义一个字符串str2,用str1初始化str2
string str3("word")//定义一个字符串str3,用”word”初始化str3
string str4(n,'a')//定义一个字符串str4,并将其初始化为n个'a'

3.输入

  1)无空格、换行符的字符串:cin

  2)(可能)有空格、换行符的字符串:getline

getline(cin,字符串变量)

4.常用操作

s.empty()//如果当前字符串为空,则返回ture,否则返回false
s.size()//返回字符串的字符个数
s.insert(pos,s2)//在s下标为pos的元素前插入字符串s2
s.substr(pos,n)//返回s中从下标为pos的元素起的n个字符
s.erase(pos,n)//删除从pos开始的n个字符
s.replace(pos,n,s2)//将s中从pos开始的n个字符替换为s2
s.find(s2,pos)//在s中找pos元素后s2首次出现的位置

5.string中的字典序

  1)比较运算符

  2)s1.compare(s2)\

 

完结!

 

posted @ 2021-08-04 08:52  TheZealous  阅读(64)  评论(0编辑  收藏  举报