字符,字符串

  • 字符:
    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
} 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值