- 字符:
1). 头文件:#include<ctype.h>
2). 操作:
isalnum// 是否字母和数字
isdigit//是否数字
isspace//是否空格
isupper//是否大写字母
toupper//转换为大写字母
tolower//转换为小写字母
//字符数组的连接,复制等操作用法和字符串相同strcat等
3).字符数组输入方式
//方式1:不能接收空格
const int maxn = 5e4 + 20;
char str[maxn];
int k;
scanf("%s%d", str, &k);//输入方式,23 2354
cout<<str;//23(不能接收空格,碰到空格结束)
//方式2:可接收空格cin.getline(数组名,输入的长度+'\0')
char ch[10];
cin.getline(ch,6);//123 3563(接收空格)
cout<<ch<<endl;//123 3(包含末尾字符'\0')
4). 实例:
//toupper(str[i]) 输出:转换成大写字母后的ASC码;
//若前加(char) 输出:转换后对应的大写字母。
//char c2[5]="abcd"; 注意数组大小是5,因为字符串还有一个结尾符\0
—————————————————————分割线————————————————————
字符串:
1.操作:
strcpy //串拷贝
strncpy//按长度的串拷贝
strcat //字符串连接函数 串连接
strncat//按长度连接字符串
strcmp //字符串比较
+ //串联字符串
swap() //交换两个字符串的内容
begin() end() //提供类似STL的迭代器支持
rbegin() rend() //逆向迭代器
empty() //判断字符串是否为空
str.size(),str.length() //返回字符数量
+=,append(),push_back() //在尾部添加字符,其中push_back只能添加单个字符
str1.replace(pos1,str2) //替换字符
insert(index,ch) //插入字符,被插入的字符串将放在这个索引的后面,不支持传入单个字符。
strstr(str1,str2);//若str2是str1的子串,则返回str2在str1的首次出现的位置以后的所有字符;如果str2不是str1的子串,则返回NULL。
- strstr的函数定义
int main()
{
char *str1="hello123",*str2="llo";
char *sub=strstr(str1,str2);//若str2是str1的子串,则返回str2在str1的首次出现的位置以后的所有字符;如果str2不是str1的子串,则返回NULL。
cout<<sub<<endl;//llo123
}
- strcmp的函数定义(字符串比较)
/*
按照ASCII表的先后顺序,比较两个字符串中各个对应字符大小;相同则返回0,不同则返回减值。
strcmp()函数原型
int strcmp(const char *strOne, const char *strTwo)
strcmp()函数定义
int strcmp(const char *strOne, const char *strTwo)
{
if ((NULL == strOne) || (NULL == strTwo))
throw"Invalid Arguments!";
while((*strOne != '/0') && (*strTwo != '/0') && (*strOne == *strTwo))
{
strOne++;
strTwo++;
}
return (*strOne - *strTwo);
}
在VC和GCC编译器中使用原有的strcmp()库函数,则结果与上面的不同)
若strOne大于strTwo,则返回1;
若strOne小于strTwo,则返回-1;
若strOne等于strTwo,则返回0;
不同编译器对返回值有不同的规定。
*/
- strcpy的函数定义(字符串复制)
/*
strcpy把从src地址开始且含有'\0'结束符的字符串复制到以dest开始的地址空间,返回值的类型为char*。
strcpy函数的原型是:
char * strcpy(char * strDest,const char * strSrc);
C语言标准库函数strcpy
返回值:目标串的地址。
对于出现异常的情况ANSI-C99标准并未定义,故由实现者决定返回值,通常为NULL。
参数:des为目标字符串,source为原字符串。
char* strcpy(char* des,const char* source)
{
char* r=des;
assert((des != NULL) && (source != NULL));// assert假设
while((*r++ = *source++)!='\0');//赋值表达式返回左操作数,所以在赋值'\0'后,循环停止。
return des;
}
*/
1.1.比较*compair()
==,!=,<,<=,>,>=,compare() //比较字符串
string s("abcd");
s.compare("abcd"); //返回0
s.compare("dcba"); //返回一个小于0的值
s.compare("ab"); //返回大于0的值
1.2.串更改,插入,赋值 assign()
=,assign() //赋以新值
s.assign(str,1,3); //如果str是"iamangel" 就是把"ama"赋给字符串
s.assign(str,2,string::npos);//把字符串str从索引值2开始到结尾赋给s
s.assign("gaint"); //不说
s.assign("nico",5);//把’n’ ‘I’ ‘c’ ‘o’ ‘\0’赋给字符串
s.assign(5,’x’); //把五个x赋给字符串
1.3.删除 erase()
erase() //删除字符
clear() //删除全部字符 s=” ”;
如:s.erase(13);//从索引13开始往后全删除
s.erase(7,5);//从索引7开始往后删5个
1.4.子串substr()
substr() //返回某个子字符串
如: s.substr();//返回s的全部内容
s.substr(11);//从索引11往后的子串
s.substr(5,6);//从索引5开始6个字符
1.5.查找 find()
/*
find()返回符合搜索条件的字符区的第一个字符的索引,没找到目标就返回npos。第一个参数是被搜寻的对象。第二个参数(可有可无)指出string内的搜寻起点索引,第三个参数个参数(可有可无)指出搜寻的字符个数。
rfind()
find_first_of()
find_last_of()
find_first_not_of()
find_last_not_of()
需要把一个索引与npos相比:(判断字符串中是否含有某个子串)
if(str.find("jia")== string::npos)。没找到
*/
1.6.字符串转换成大写 transform
transform(str.begin(),str.end(),str.begin(),(int(*)(int))toupper);//字符串转换成大写
1.7.replace()
#include<bits/stdc++.h>
using namespace std;
int main()
{
string str="as234j57u";
for(int i=0;i<str.length();i++)
{
if(str[i]>=48&&str[i]<=57)
{
str.replace(i,1,"");//从i位置的连续1个字符替换为没有,即删除
i--;
}
}
cout<<str;//asju
}