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

目录
  • 1、cstring.h常用函数介绍
  • 2、strlen
  • 3、strcat
  • 4、strncat
  • 5、strcpy
  • 6、strncpy
  • 7、memset
  • 8、memcpy
  • 9、strcmp
  • 10、strncmp
  • 11、strstr

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)

(0)

相关推荐

  • C++字符串输入缓冲区机制详解

    目录 一.缓冲定义 1.缓冲定义 2.为什么引入缓冲区 二.scanf,cin输入缓冲区 1.scanf和cin的缓冲类型 2.scanf和cin的缓冲机制 3.cin.getline和cin.get 4.scanf和cin输入 5.可能遇到的问题 总结 一.缓冲定义 1.缓冲定义 缓冲是在两种不同速度设备之间传输信息时平滑传输过程的常用手段. 2.为什么引入缓冲区 操作系统这门课有明确的说明缓冲的作用,是为了解决高速设备和低速设备之间速度不匹配的问题,直接举个书上的CPU和打印机的例子: 首先

  • 详解C++字符串常用操作函数(查找、插入、截取、删除等)

    1. 字符串查找函数 1.1 find 函数 原型为:unsigned int find(const basic_string &str) const; 作用:查找并返回str在本串中第一次出现的位置,位置从0开始 例子如下: #include <iostream> using namespace std; int main() { string str = "i love china. china love me"; string find_str = "

  • C,C++中常用的操作字符串的函数

    小小的做一个总结 函数名: stpcpy 功 能: 拷贝一个字符串到另一个,遇到'\0'时停止拷贝,destin要有足够大的空间 用 法: char *stpcpy(char *destin, char *source);   函数名: strcat 功 能: 字符串拼接函数,注意,destin要有足够大的空间 用 法: char *strcat(char *destin, char *source); 函数名: strchr 功 能: 在一个串中查找给定字符的第一个匹配之处,找不到返回NULL

  • C++获取字符串长度的几个函数方式

    C/C++ strlen(str).str.length().str.size().sizeof(str)都可以求字符串长度. 其中str.length().str.size().sizeof(str)是用于求string类对象的成员函数 strlen(str)是用于求字符数组的长度,其参数是char*. 补充知识:获取字符串长度的函数sizeof().strlen().length().size()详解和区别 在C++中计算长度的函数有四种,它们分别是sizeof() ,size(),strl

  • 如何在c++中实现字符串分割函数split详解

    前言 在学习c++中string相关基本用法的时候,发现了sstream的istringstream[1]可以将字符串类似于控制台的方式进行输入,而实质上这个行为等同于利用空格将一个字符串进行了分割,于是考虑到可以利用这个特性来实现c++库函数中没有的字符串分割函数split string src("Avatar 123 5.2 Titanic K"); istringstream istrStream(src); //建立src到istrStream的联系 string s1, s2

  • C++变量,常量,数组和字符串详解

    目录 一.内存和寻址概述 二.变量 1.声明变量 2.变量的作用域 2.1 局部变量 2.2 全局变量 3.c++变量类型 3.1.bool布尔类型 3.2 char字符型 4.常量 总结 一.内存和寻址概述 可编程设备包含微处理器和一定数量的临时存储空间.临时存储器被称为随机存取存储器(RAM). RAM类似于宿舍里成排存物柜的存储区域,每个存物柜都有编号,即地址.要访问特定的内存单元,需要使用指令要求处理器从这里获取值或写入值. 微处理器负责执行应用程序,并从RAM中获取要执行的应用程序以及

  • C字符串函数对应的C++ string操作详解

    string是STL里的标准类,习惯了使用指针操作C的char *字符串,刚开始并不是很适应,主要原因是对string.h里的函数没有找到合适的C++替换方法,因此,对常用的sring.h里的函数替换说明如下: strcpy: str.substr() strncpy: str.substr(pos, n) strcmp: == strncmp: == strstr: str.find() strcat: str.append() strchr: str.find() strtok: 无对应函数

  • C++中的字符串(1)

    目录 1.字符串 1.1 字符串定义 1.2 字符串的读入 1.3 排坑 1.字符串 1.1 字符串定义 字符串就是连续的一连串字符,在C++当中, 处理字符串的方式有两种类型.一种来自于C语言,也被称为C风格字符串.另外一种是基于string类库. C风格的字符串其实就是字符存储在char数组当中.不过它和一般的数组有一些区别,拥有一些特殊的性质.比如一空字符\0结尾,它的ascii码是0,用来标记字符串的结尾. char str[5] = {'h', 'e', 'l', 'l', 'o'};

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

    目录 1.cstring.h常用函数介绍 2.strlen 3.strcat 4.strncat 5.strcpy 6.strncpy 7.memset 8.memcpy 9.strcmp 10.strncmp 11.strstr 1.cstring.h常用函数介绍 cstring.h库即C语言中的string.h库,它是C语言中为字符串提供的标准库.C++对此进行了兼容,所以我们在C++当中一样可以使用. 这个库当中有大量的关于字符串操作的api,本文选择了其中最常用的几个进行阐述. 2.st

  • PHP常用字符串函数用法实例总结

    本文实例总结了PHP常用字符串函数用法.分享给大家供大家参考,具体如下: 字符串函数 explore 使用一个字符串分割另一个字符串 结果为数组 <?php $str = 'a,b,c,d'; $res = explode(',',$str); var_dump($res); implode(join) 将一个一维数组的值转化为字符串 <?php $arr = ['a'=>1,'b'=>2]; $res = implode(',',$arr); var_dump($res); ht

  • MySQL 字符串函数大全

    MySQL 字符串函数大全 对于针对字符串位置的操作,第一个位置被标记为1. ASCII(str) 返回字符串str的最左面字符的ASCII代码值.如果str是空字符串,返回0.如果str是NULL,返回NULL. mysql> select ASCII('2'); -> 50 mysql> select ASCII(2); -> 50 mysql> select ASCII('dx'); -> 100 也可参见ORD()函数. ORD(str) 如果字符串str最左面

  • PHP常用字符串函数小结(推荐)

    一.判断类型的函数 is_bool() //判断是否为布尔型 is_float() //判断是否为浮点型 is_real() //同上 is_int() //判断是否为整型 is_integer() //同上 is_string() //判断是否为字符串 is_object() //判断是否为对象 is_array() //判断是否为数组 is_null() //判断是否为null is_file() //判断是否为文件 is_dir() //判断是否为目录 is_numeric() //判断是

  • MySQL 十大常用字符串函数详解

    大家好!我是只谈技术不剪发的 Tony 老师. 数据库函数是一种具有某种功能的模块,可以接收零个或多个输入值,并且返回一个输出值.MySQL 为我们提供了许多用于处理和分析数据的系统函数,本文给大家介绍 10 个常用的字符串函数,以及相关的其他函数. CONCAT() CONCAT(str1,str2,-))函数用于返回多个字符串连接之后的字符串,例如: SELECT CONCAT('MySQL', '字符串', '函数') AS str; str | --------------+ MySQL

  • JavaScript常用工具函数大全

    本文实例总结了JavaScript常用工具函数.分享给大家供大家参考,具体如下: 为元素添加on方法 Element.prototype.on = Element.prototype.addEventListener; NodeList.prototype.on = function (event, fn) {. []['forEach'].call(this, function (el) { el.on(event, fn); }); return this; }; 为元素添加trigger方

  • sql字符串函数大全和使用方法示例

    SQL SERVER支持的字符串函数内容: 复制代码 代码如下: LEN(string)函数LOWER(string)函数UPPER (string)函数LTRIM(string)函数RTRIM (string)函数SUBSTRING(string,start_position,length)函数CHARINDEX(string,substring)函数LEFT (string,length)函数RIGHT (string,length) 函数ASCII(string)函数ASCII(strin

  • php 常用字符串函数总结

    1.格式化输出 chop 是rtrim()的别名: ltrim() trim() nl2br()将\n转换成<br> print,echo,printf(),sprintf(): echo()不是函数,print()是函数,有返回值,boolen,false,true: printf()格式化输出 --函数,把文字格式化以后输出,直接调用系统调用进行IO的,他是非缓冲的.如: $name="hunte"; $age=25; printf("my name is %

  • sql中的常用的字符串处理函数大全

    具体内容如下所示: 一.常用函数 1.ASCII() 返回字符表达式最左端字符的ASCII 码值.在ASCII()函数中,纯数字的字符串可不用''括起来,但含其它字符的字符串必须用''括起来使用,否则会出错. 2.CHAR() 将ASCII 码转换为字符.如果没有输入0 ~ 255 之间的ASCII 码值,CHAR() 返回NULL . 3.LOWER()和UPPER() LOWER()将字符串全部转为小写:UPPER()将字符串全部转为大写. 4.STR() 把数值型数据转换为字符型数据. S

  • php常用字符串String函数实例总结【转换,替换,计算,截取,加密】

    本文实例总结了php常用字符串String函数.分享给大家供大家参考,具体如下: nl2br 功能:化换行符为<br> <?php $str = "cat isn't \n dog"; $result = nl2br($str); echo $result; /**结果 cat isn't dog */ rtrim 功能:清除右边的空白 <?php $str = "Hello world "; echo strlen($str)."

随机推荐