字符串系列函数

1、

strcpy用法:
原型声明:char *strcpy(char* dest, const char *src);

头文件:#include <string.h> 和 #include <stdio.h>

功能:把含有’\0’结束符的字符串复制到另一个地址空间,返回值的类型为char*。

说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。

strcpy_s用法:
原型:三个參数时:errno_t strcpy_s(char *strDest, size_t size, const char *strSource);

功能:同strcpy()函数功能相同,不同之处在于参数中多了个size_t类型的参数,该参数为字符串dst的长度,当存在缓存区溢出的问题时(即src的长度大于dst的长度),strcpy_s()会抛出异常;而strcpy()结果则未定,因为它错误地改变了程序中其他部分的内存的数据,可能不会抛出异常但导致程序数据错误,也可能由于非法内存访问抛出异常。

strncpy用法:
头文件:#include <string.h>

语法:char *strncpy(char *destinin, char *source, int maxlen);

功能:strncpy函数用于将指定长度的字符串复制到字符数组中。

说明:C语言的库函数之一,来自 C语言标准库。如果n<source的长度,只是将source的前n个字符复制到destinin的前n个字符,不自动添加’\0’,也就是结果destinin不包括’\0’,需要再手动添加一个’\0’。如果source的长度小于n个字节,则以NULL填充destinin直到复制完n个字节。source和destinin所指内存区域不可以重叠且destinin必须有足够的空间来容纳source的字符长度+’\0’。

strncpy_s用法:
原型:
四个参数时:errno_t strncpy_s(char *strDest, size_t numberOfElements, const char *strSource, size_t count);

说明:
1.参数numberOfElements表明dest中的字节数,防止目标指针dest中的空间不够,同时返回值改成返回错误代码,而不是返回char*。
2.会在字符串结束处填补一个空字符。
3.count参数需要小于目标缓冲区大小。

2、C 库函数 int atoi(const char *str) 把参数 str 所指向的字符串转换为一个整数(类型为 int 型)。

3、C 库函数 char *strrchr(const char *str, int c) 在参数 str 所指向的字符串中搜索最后一次出现字符 c(一个无符号字符)的位置。

参数

  • str -- C 字符串。
  • c -- 要搜索的字符。以 int 形式传递,但是最终会转换回 char 形式。

返回值

该函数返回 str 中最后一次出现字符 c 的位置。如果未找到该值,则函数返回一个空指针。

4、strcmp(s1,s2) 判断两个字符串s1和s2是否相同,若str1==str2,则返回零;若str1<str2,则返回负数;若str1>str2,则返回正数。

5、

char * strtok ( char * str, const char * delimiters );

该函数按分隔符分解字符串。参数:

str : 要被分解成一组小字符串的字符串。

delimiters : 包含分隔符的 C 字符串。

返回值:

该函数返回被分解的一个子字符串,如果没有可检索的字符串,则返回一个空指针。

6、C 库函数 char *strcat(char *dest, const char *src) 把 src 所指向的字符串追加到 dest 所指向的字符串的结尾。

7、c_str()函数返回一个指向正规C字符串的指针常量, 内容与本string串相同。这是为了与C语言兼容,在C语言中没有string类型,故必须通过string类对象的成员函数c_str()把string对象转换成c中的字符串样式。

用法:char c[20];

string s="1234";

strcpy(c,s.c_str());

c_str()返回的是一个临时指针,不能对其进行操作。一定要使用strcpy()函数 等来操作方法c_str()返回的指针。这跟str这个const char*的生命周期及string类的实现有关,string的c_str()返回的指针是由string管理的,因此它的生命期是string对象的生命期,而string类的实现实际上封装着一个char*的指针,而c_str()直接返回该指针的引用,因此string对象的改变会直接影响已经执行过的c_str()返回的指针引用。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值