广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C++常用字符串函数大全(2)
  • 742
分享到

C++常用字符串函数大全(2)

2024-04-02 19:04:59 742人浏览 独家记忆
摘要

目录1、cstring.h常用函数介绍2、strlen3、strcat4、strncat5、strcpy6、strncpy7、memset8、memcpy9、strcmp10、str

1、cstring.h常用函数介绍

cstring.h库即C语言中的string.h库,它是C语言中为字符串提供的标准库。c++对此进行了兼容,所以我们在C++当中一样可以使用。

这个库当中有大量的关于字符串操作的api,本文选择了其中最常用的几个进行阐述。

2、strlen

由于编译器是按照\0的位置来确定字符串的结尾的,所以字符串的长度并不等于数组的长度。

我们可以使用strlen函数求得字符串的真实长度:


char name[100] = "hello world";
cout << strlen(name) << endl;


比如我们这里用一个长度为100的char数组存储了“helloworld”字符串,当我们使用strlen函数求它的实际长度只有11。

3、strcat

strcat函数可以将两个字符串进行拼接,它的函数签名为:


char *strcat(char *dest, const char *src)


我们可以看到它接受两个参数,一个是dest,一个是src,都是char*类型,返回的结果也为char *类型。在C++当中,数组名是指向数组中第一个元素的常量指针。所以虽然签名中写的参数是指针类型,但我们传入数组名同样可以。

我们传入两个字符串之后,strcat函数会将src字符串拼接在dest字符串末尾,并且返回指向拼接之后结果的指针。

所以下面两种方式输出结果得到的值是一样的。


char name[100] = "hello world";
char level[100] = "concat test";

char *ret = strcat(name, level);
cout << ret << endl; // 方式1
cout << name << endl; // 方式2

4、strncat

strcat函数的变种,函数额外多接收一个参数控制拷贝src字符串的最大长度。


char *strncat(char *dest, const char *src, size_t n)


我们使用刚才同样的例子:


char name[100] = "hello world";
char level[100] = "concat test";

char *ret = strncat(name, level, 4);
cout << ret << endl;
cout << name << endl;


由于我们传入了4,限制了level字符串拷贝的长度,所以最终得到的结果为:hello worldconc。

5、strcpy

字符串拷贝函数,可以将src字符串中的内容复制到dest


char *strcpy(char *dest, const char *src)


使用方法和前面介绍的其他函数类似,有两点需要注意。

如果dest字符串长度不够长,在编译时不会报错,但运行时可能导致问题。


char name[10] = "";
char level[100] = "concat test";

strcpy(name, level);
cout << name << endl;


上面这段代码可以编译运行,但是运行的时候终端会出现出错信息。


所以在使用strcpy的时候千万小心,一定要保证dest有足够长度。

如果dest中原本就有内容,会被覆盖。


char name[15] = "abc";
char level[100] = "concat test";

strcpy(name, level);
cout << name << endl;


运行完strcpy之后,name中的内容会被清空。

6、strncpy

strcpy加入长度限制的版本,可额外多传入一个参数n表示最多赋值n个字符。当src长度小于n时,剩余部分将会使用空字节填充。


char *strncpy(char *dest, const char *src, size_t n)
char name[15] = "abc";
char level[100] = "concat test";

strncpy(name, level, 4);
cout << name << endl;

输出结果为conc。

7、memset

字符串的批量设置函数,可以将字符串批量设置成某一个字符。


void *memset(void *str, int c, size_t n)


int c表示要被设置的字符,size_t n表示设置的字符数量。


char name[15] = "abc";
char level[100] = "concat test";

memset(name, 'c', 10);
cout << name << endl;


上述代码的运行结果为10个c。

多说一句,memset除了可以用来给字符串进行批量设置之外也可以给int型的数组进行批量设置。由于一个32位的int占据4个字节,也就是4个字符长度。所以使用memset进行批量设置的时候,最终得到的结果将是4个传入的int c拼接的结果。


int a[100];
memset(a, 1, sizeof a); // memset(a, 1, 400); 因为一个int占据4个字节


我们这样设置之后,a数组当中的元素并不是1,而是0x01010101,转成10进制是16843009

所以使用memsetint型数组进行初始化一般只用3种操作:


// 1. 批量设置成0
memset(a, 0, sizeof a);
// 2. 批量设置成-1
memset(a, -1, sizeof a);
// 3. 批量设置成一个接近最大整数上限的值
memset(a, 0x7f, sizeof a);
memset(a, 0x3f, sizeof a);


关于memset使用的一些具体细节将在后续题解的实际问题当中再做详细说明。

8、memcpy

strcpy类似,从str2中复制N个字符到str1中。


void *memcpy(void *str1, const void *str2, size_t n)
char name[15] = "abc";
char level[100] = "concat test";

memcpy(name, level, 10);


9、strcmp

将两个字符串按照字典顺序进行比较,对于字典序的顺序定义为:两个字符串自左向右逐个字符相比(按 ASCII 值大小相比较),直到出现不同的字符或遇 \0 为止。


int strcmp(const char *str1, const char *str2)


返回的结果为一个int,如果它小于0,说明str1小于str2,如果它等于0,说明两者相等,如果大于0,说明str1大于str2


char name[15] = "abc";
char level[100] = "abcd";

cout << strcmp(name, level) << endl;


运行结果为-100,说明name小于level。

10、strncmp

strcmp长度限制版,可以额外接受一个数字n,表示最多比较长度为n的字符。


int strncmp(const char *str1, const char *str2, size_t n)

11、strstr


char *strstr(const char *haystack, const char *needle)


haystack中搜索needle第一次出现的位置,返回指向该位置的指针。


char name[15] = "search-test";
char level[100] = "-";

char *ret = strstr(name, level);
cout << ret << endl;

运行之后,屏幕输出的结果为:

因为当我们使用cout输出一个char *变量的时候,它会当做是字符串进行输出,即一直输出字符,直到遇见\0为止。

输出的结果为-test,说明我们通过strstr函数找到了“-”出现的位置,跳过了之前的内容。

除了上文介绍的这些函数之外,cstring当中还有很多其他的api,例如strtok,memmove等等,大家感兴趣不妨去翻阅相关文档,也许会有惊喜。

到此这篇关于C++常用字符串函数大全的文章就介绍到这了,更多相关C++常用字符串函数内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

注:文章转自微信公众号:Coder梁(ID:Coder_LT)

--结束END--

本文标题: C++常用字符串函数大全(2)

本文链接: https://www.lsjlt.com/news/156300.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C++常用字符串函数大全(2)
    目录1、cstring.h常用函数介绍2、strlen3、strcat4、strncat5、strcpy6、strncpy7、memset8、memcpy9、strcmp10、str...
    99+
    2022-11-12
  • C/C++中关于字符串的常见函数操作大全
    目录wcsncpy_sswprintf_smemsetmemcmpmemcpywcslenLoadStringWGetModuleHandleWUuidFromStringWUuid...
    99+
    2023-03-22
    C++字符串常见函数 C++常见函数
  • C++常用字符串函数有哪些
    本篇内容主要讲解“C++常用字符串函数有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C++常用字符串函数有哪些”吧!1、cstring.h常用函数介绍cstring.h库即C语言中的str...
    99+
    2023-06-25
  • mysql字符串处理函数大全
    ASCII():返回给定字符的ASCII值。 示例:SELECT ASCII('A'); 返回65。 BIN():将给定的整数转换为二进制字符串表示。 示例:SELECT BIN(10); 返回'10...
    99+
    2023-09-18
    mysql 数据库
  • MySQL 十大常用字符串函数详解
    大家好!我是只谈技术不剪发的 Tony 老师。 数据库函数是一种具有某种功能的模块,可以接收零个或多个输入值,并且返回一个输出值。MySQL 为我们提供了许多用于处理和分析数据的系...
    99+
    2022-11-12
  • C/C++字符函数和字符串函数详解————长度受限制的字符串函数
    个人主页:点我进入主页 专栏分类:C语言初阶      C语言程序设计————KTV       C语言小游戏     C语言进阶 C语言刷题 欢迎大家点赞,评论,收藏。 一起努力,一起奔赴大厂。 目录 1.前言      ...
    99+
    2023-10-02
    c语言
  • 【C语言】字符函数和字符串函数
    目录 一、函数介绍及其模拟实现 1.strlen 2.strcpy 3.strcat 4.strcmp  5.strncpy 6.strncat  7.strncmp 8.strstr  9.strtok 10.strerror   11....
    99+
    2023-09-15
    c语言 开发语言
  • C语言:字符函数和字符串函数(一篇拿捏字符串函数!)
    目录 求字符串长度: 1. strlen(字符串长度) 长度不受限制函数: 2. strcpy(字符串拷贝) 3. strcat(字符串追加) 4. strcmp(字符串比较) 长度受限制函数: 5. strncpy(字符串拷贝) 6. ...
    99+
    2023-10-02
    c语言 开发语言 深度学习 学习 笔记 c++ 算法
  • 实现C语言常用字符串库函数
    目录strlenstrcpystrcatstrcmp总结strlen 数组长度的计算是通过strlen来的,它的作用就是判断给定的数组元素个数,直到碰到\0结束 函数原型 siz...
    99+
    2022-11-12
  • python字符串常规操作大全
    拼接字符串 使用“+”运算符可完成对多个字符串的拼接,“+”运算符可以连接多个字符串并产生一个字符串对象。 字符串不允许直接与其他类型数据拼接。 如果要用来和其他类型拼接,先用str()函...
    99+
    2022-06-02
    Python字符串操作 python字符串处理函数 python 截取字符串
  • C语言字符函数与字符串函数详解
    目录本章重点前言1.strlen函数注意点1注意点22.strcpy注意点1:注意点2:注意点3:注意点4:总结本章重点 重点介绍处理字符和字符串的库函数的使用和注意事项 1.求字符...
    99+
    2022-11-12
  • C语言的字符函数和字符串函数怎么用
    这篇文章主要讲解了“C语言的字符函数和字符串函数怎么用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C语言的字符函数和字符串函数怎么用”吧!一、字符&字符串函数1.strlen--求...
    99+
    2023-06-26
  • C语言超全面讲解字符串函数
    目录1、gets函数2、puts函数3、strcat函数4、strcpy函数(strncpy函数)5、strcmp函数(strncmp函数)6、strlen函数7、strlwr函数8...
    99+
    2022-11-13
  • C语言中字符函数和字符串函数介绍
    本篇内容介绍了“C语言中字符函数和字符串函数介绍”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!目录前言求字符串长度strlen介绍strle...
    99+
    2023-06-20
  • C语言的字符函数和字符串函数详解
    目录0. 前言1.函数介绍及部分函数模拟实现1.1 strlen模拟实现1.2 strcpy模拟实现1.3 strcat模拟实现1.4 strcmp 模拟实现1.5 str...
    99+
    2022-11-13
  • C语言实现常用字符串库函数(推荐)
    目录一、实现memcpy二、memmove模拟实现三、strlen的模拟实现 1.计数器方法:2.递归方式:3.利用指针实现:四、strcpy的模拟实现五、strcmp的模...
    99+
    2022-11-12
  • C++LeetCode1796字符串中第二大数字
    目录LeetCode 1796.字符串中第二大的数字方法一:遍历题目分析解题思路复杂度分析AC代码C++LeetCode 1796.字符串中第二大的数字 力扣题目链接:leetco...
    99+
    2022-12-16
    C++ 字符串第二大数字 C++ LeetCode题解
  • 怎么用C语言实现常用字符串库函数
    本篇内容介绍了“怎么用C语言实现常用字符串库函数”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、实现memcpy将src所指向的内容拷贝到...
    99+
    2023-06-25
  • Golang字符串常用函数的使用
    目录1)Golang字符串包含功能[区分大小写]2)Golang ContainsAny()[区分大小写]3)Golang Count() [区分大小写]4)Golang Equal...
    99+
    2022-11-12
  • C语言进阶教程之字符函数&字符串函数
    目录1、strlen1.1、三种模拟实现2、长度不受限制的字符串函数2.1、strcpy2.1.1、模拟实现2.2、strcat2.2.1、模拟实现2.3、strcmp2.3.1、模...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作