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)\
完结!