IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 字符串函数 -> 正文阅读

[C++知识库]字符串函数

字符串函数

1、学习目标

  • 字符串函数的用法-熟悉
  • 总结与思考

2、字符串函数

  • C库中实现了很多字符串处理函数

? #include <string.h>

  • 几个常见的字符串处理函数
    • 求字符串长度的函数strlen
    • 字符串拷贝函数strcpy
    • 字符串连接函数strcat
    • 字符串比较函数strcmp

3、字符串长度函数strlen

  • 格式:strlen(字符数组)

  • 功能:计算字符串长度。

  • 返回值:返回字符串实际长度,不包括’\0’在内。

  • \xhh表示十六进制数代表的符号

  • \ddd表示八进制的

  • 示例:

    验证strlen()函数的功能

    #include <stdio.h>
    #include <string.h>
    int main()
    {
        char s1[10]={'A','0','B','\0','C'};
        int n;
    
        n = strlen(s1);
        printf("n=%d\n", n); 
        puts(s1);
    
        return 0;
    }
    

    运行结果:"\0"为结束标志 在strlen()函数中"\0"不包含在内,不计入长度计算。

    string$ ./app
    n=3
    A0B
    

    strlen()函数和sizeof()函数的对比

    #include <stdio.h>
    #include <string.h>
    int main()
    {
    //  char s1[10]={'A','0','B','\0','C'};
    //  int n;
    
    //  n = strlen(s1);
    
        char s1[] = "makeru";
    
        printf("%d\n", strlen(s1));//字符串长度函数输出长度
        printf("%d\n",sizeof(s1)/sizeof(char));
      	//用sizeof()函数来计算字符串长度    
    
        return 0;
    }
    

    运行结果:

    string$ ./app
    6//(strlen函数不计算'\0')
    7//(sizeof函数计算'\0')
    

    特殊转义示例如下

    #include <stdio.h>
    #include <string.h>
    int main()
    {
        char s1[] = "\tab\nc\vd\\e";
        char s2[] = "\x69\141";
    
        printf("%d\n", strlen(s1));
        printf("%d\n",sizeof(s1)/sizeof(char));
    
        printf("\n%d\n", strlen(s2));
        printf("%d\n",sizeof(s2)/sizeof(char));
        puts(s2);
      
        return 0;
    }
    

    运行结果:

    string$ ./app
    9 //遇到转义的时候斜杠不算在内
    10
    
    2
    3
    ia //十六进制
    

4、字符串拷贝函数strcpy

  • 格式:strcpy(字符数组1,字符串2)//(目标,原串)

  • 功能:将字符串2拷贝到字符数组1中去

  • 返回值:返回字符数组1的首地址

  • 说明:

    • 字符数组1必须足够大
    • 拷贝时’\0’一同拷贝
  • 示例:

    将字符串拷贝到字符数组中

    #include <stdio.h>
    #include <string.h>
    
    #define N 30
    
    int main()
    {
        char src[] = "makeru";
        char dest[N];
    
        strcpy(dest,src);
    
        puts(src);
        puts(dest);
    
    
        return 0;
    }
    

    运行结果:

    string$ ./app
    makeru
    makeru
    

5、其他字符串函数

  • strncpy(p,p1,n)复制指定长度的字符串到字符数组中

    • 示例:

      #include <stdio.h>
      #include <string.h>
      
      #define N 30
      
      int main()
      {
          char src[] = "makeru";
          char dest[N] = ".com.cn";
      
          strncpy(dest,src,4);//复制长度为4的字符串到字符数组中
      
          puts(src);
          puts(dest);
      
          return 0;
      }
      

      运行结果:

      string$ ./app
      makeru
      make.cn
      
  • strncat(p,p1,n)附加指定长度字符串,字符串连接

    • 示例:

      #include <stdio.h>
      #include <string.h>
      
      #define N 30
      
      int main()
      {
          char str[] = "makeru";
          char dest[N] = ".com.cn";
      
          strncat(dest,str,4);//附加
      
          puts(str);
          puts(dest);
      
          return 0;
      }
      

      运行结果:

      string$ ./app
      makeru
      .com.cnmake
      
  • strcasecmp忽略大小写比较字符串

    • 示例

      #include <stdio.h>
      #include <string.h>
      
      int main()
      {
          char s1[] = "QUIT";//ASCII值不同
          char s2[] = "quit";
      
          printf("%d\n", strncmp(s1, s2, 4));
          printf("%d\n", strcasecmp(s1, s2));//忽略大小写
      
          return 0;
      }
      

      运行结果:

      $ ./app
      -32
      0
      
  • strncmp(p,p1,n)比较指定长度字符串,字符串大小的比较是以ASCII码表上的顺序来决定的。

    返回值:s1<s2,返回:负数;s1=s2,返回:0;s1>s2,返回:正数

    • 示例

      strcmp()比较字符串长度函数

      #include <stdio.h>
      #include <string.h>
      
      #define N 30
      
      int main()
      {
          char s1[] = "quit";
          char s2[] = "quit\n";
      
          printf("%d\n", strcmp(s1, s2));
      
          return 0;
      }
      

      运行结果:\n的ASCII码值是10

      string$ ./app
      -10
      

      strncmp()比较指定长度的字符串函数

      #include <stdio.h>
      #include <string.h>
      
      #define N 30
      
      int main()
      {
          char s1[] = "quit";
          char s2[] = "quit\n";
      
          printf("%d\n", strncmp(s1,s2,2));
      
          return 0;
      }
      

      运行结果:0 是s1和s2相等

      string$ ./app
      0
      
  • strchr(p,c)在字符串中查找指定字符

    • 示例

      #include <stdio.h>
      #include <string.h>
      
      int main()
      {
          char s1[] = "asdSfgh";
          int ch;
      
          ch = 'S';
      
          printf("%p %p \n", s1, strchr(s1, ch));//查找第一次
      		printf("%p %p \n", s1, strrchr(s1, ch));
        	//查找最后一次出现的,反向查找
      
          return 0;
      }
      

      运行结果:

      /string$ ./app
      $ ./app
      0x7ffefb2c29a0 0x7ffefb2c29a3
      0x7ffefb2c29a0 0x7ffefb2c29a6
      
      #include <stdio.h>
      #include <string.h>
      
      int main()
      {
          char s1[] = "asdSfgSh";
          int ch;
      
          ch = 'S';
      
          printf("%d\n", strchr(s1, ch)-s1);
          printf("%d\n", strrchr(s1, ch)-s1);
        
          return 0;
      }
      

      运行结果:

      string$ ./app
      3
      6
      
  • strstr(p,p1)查找字符串(返回查找内容在数组中的地址)

    • 示例

      #include <stdio.h>
      #include <string.h>
      
      int main()
      {
          char s1[] = "how are you";
          char subs[] = "are";
      
      
          printf("%d\n", strstr(s1,subs)-s1);
      
          return 0;
      }
      

      运行结果:由于输出是%d所以输出是该地址的位置

      $ ./app
      4
      

6、检查字符串函数,头文件为#include(ctype.h)

  • isalpha()检查是否为字母字符

  • isupper()检查是否为大写字母字符

  • islower()检查是否为小写字母字符

  • isdigit()检查是否为数字

    • 示例

      #include <stdio.h>
      #include <ctype.h>
      
      int main()
      {
          int ch;
      
          while((ch = getchar()) != EOF){
              if(isalpha(ch)){
                  if(isupper(ch)){
                      printf("Upper:%c\n",ch);
                  }
                  if(islower(ch)){
                      printf("Lower:%c\n",ch);
                  }
              }
              if(isdigit(ch))
                  printf("Digit:%d %c\n",ch -'0',ch);
            //定义字符型ch,由%d输出需要通过ch-'0'才可以得到该数字,不然会认为输入该数字是字符。
          //  putchar(ch);
      
          }
      
          return 0;
      }
      

      运行结果:

      /string$ ./app
      A
      Upper:A
      s
      Lower:s
      3
      Digit:3 3
      

      大小写转换

      #include <stdio.h>
      #include <ctype.h>
      
      int main()
      {
          int ch; 
      
          while((ch = getchar()) != EOF){
              if(isalpha(ch)){
                  if(isupper(ch)){
                      ch = tolower(ch);
                  }
                  else{
                      ch = toupper(ch);
                  }   
                  printf("%c\n", ch);
              }   
          }   
          return 0;
      }
      

      运行结果:

      string$ ./app
      ASD
      a
      s
      d
      sdf
      S
      D
      F
      
  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-12-04 13:12:48  更:2021-12-04 13:14:49 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 9:17:36-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码