编程基础——字符/字符串库函数

编程基础——字符/字符串库函数

知识点:
C++把一整行读入:

char str[100];        
cin.getline(str,100);   //读入字符数组
 
string str;
getline(cin,str);      //读入string容器
1. 求长度
  • C语言使用:strlen(字符数组名)
    求字符数组长度,或者字符串的元素个数
#include<cstdio>
#include<cstring>         //加头文件

int main(){
    
    char str[100];
    scanf("%s", str);    //录入串至数组,以空格或者换行作为结束
    //gets(str);          //录入串至数组,以换行作为结束,空格也录入
    int len=strlen(str);  //strlen(数组名),求出字符数组长度
    printf("%d",len);
    
    return 0;
}

输入:abcd       abcd e  (gets)
输出:4          6
  • C++使用:数组名.size() 
    求string字符串长度,字符串可以按数组来用
#include<iostream>
using namespace std;

int main(){

    string str;
    cin>>str;           //以空格或者换行结束
    int len=str.size();  //数字名.size(),求字符串长度
    cout<<len;

    return 0;
}


2. 字符串比较 strcmp()
  • strcmp(字符数组1,字符数组2)按字典顺序比较两字符数组的大小
    a>b: 返回一正数
    a=b: 返回0
    a<b: 返回一负数
#include<iostream>
#include<cstdio>   //gets头文件
#include<cstring>  //strcmp头文件
using namespace std;

int main(){
    char str1[100],str2[100];
    gets(str1);                 //只录入字符串不需要吸收换行符
    gets(str2);
    int num=strcmp(str1,str2);  
    cout<<num;
    return 0;
}
输入:
abc
ABC
输出:1
  • 字符串1.compare(字符串2)按字典顺序比较两string字符串的大小
    a>b: 返回一正数
    a=b: 返回0
    a<b: 返回一负数
#include<iostream>
using namespace std;

int main(){
    string str1="bbc";
    string str2="ABC";
    int num=str1.compare(str2);
    cout<<num;                  //结果为1,str1>str2
    return 0;
}
输出:1


3. 字符数组复制strcpy()

strcpy(字符数组1,字符数组2),可以把字符数组2的内容复制到字符数组1中

#include<iostream>
#include<cstdio>   //gets头文件
#include<cstring>  //strcpy头文件
using namespace std;

int main(){
    
    char str1[100],str2[100];
    gets(str1);                 //只录入字符串不需要吸收换行符
    gets(str2);                 //先录入数字再录入字符数组需要吸收换行符
    strcpy(str1,str2);
    cout<<str1;                 //可以直接输出字符数组
    return 0;
}
输入:
123
456
输出:
456

4. 字符数组拼接strcat()

strcat(字符数组1,字符数组2)可以将字符数组2的内容放到字符数组1的后面

#include<iostream>
#include<cstdio>   //gets头文件
#include<cstring>  //strcpy头文件
using namespace std;

int main(){

    char str1[100],str2[100];
    gets(str1);                 //只录入字符串不需要吸收换行符
    gets(str2);                 //先录入数字再录入字符数组需要吸收换行符
    strcat(str1,str2);
    cout<<str1;                 //可以直接输出字符数组
    return 0;
}
输入:
123
456
输出:
123456

5. sscanf()与sprintf()

处理字符串利器
sscanf(str, “%d”, &num): 将str字符数组中的内容以"%d"的格式读入数字num
sprintf(str, “%d”, num): 将数字num以"%d"的格式读入到字符数组中

#include<cstdio>
using namespace std;

int main(){
    int num;
    char str[100]="123";
    sscanf(str, "%d", &num);  //把字符数组str内容以"%d"的格式写入num中,从左至右
    printf("%d\n",num);     //123

    int n=456;
    char str1[100];
    sprintf(str, "%d", n);   //把数字n以"%d"的格式写入到str数组中,从右至左
    printf("%s",str);       //456

    return  0;
}

  • 可以像使用scanf()与printf()一样进行复杂格式输入输出
#include<cstdio>
using namespace std;

int main(){
    int n;
    double m;
    char str1[100];
    char str2[100]="2048:3.14,hello";
    sscanf(str2, "%d:%lf,%s", &n,&m,&str1);   //sscanf从左向右拆开
    printf("%d:%.2f,%s\n", n,m,str1);

    int n1=2048;
    double m1=3.14;
    char str3[100]="hello";
    char str4[100];
    sprintf(str4, "%d:%.2lf,%s", n1,m1,str3);  //sprintf从右向左合起
    printf("%s",str4);

    return  0;
}
输出:
2048:3.14,hello
2048:3.14,hello
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值