C++ 库 - <cstring>



C++ 中的 <cstring> 头文件提供了一组用于操作 C 风格字符串(以 null 结尾的字符数组)并在内存块上执行操作的函数。C 风格字符串是以 null 字符(\0)结尾的字符数组,表示字符串的结束。<cstring> 库继承自 C 编程语言,是 C++ 标准库的一部分。

C 风格字符串与 C++ 字符串对象 (std::string) 不同,因为它们是低级的,并且依赖于原始内存操作。在性能方面,使用 C 风格字符串可能比使用更高级别的 C++ 字符串类更有效,因为它们允许直接控制内存。

<cstring> 库提供了各种用于操作 C 风格字符串的函数,例如复制、连接、比较和搜索。这些函数将 C 风格字符串视为字符数组,并在到达 null 终止符之前执行操作。

包含 <cstring> 头文件

要在 C++ 程序中包含 <cstring> 头文件,可以使用以下语法。

#include <cstring>

<cstring> 头文件的函数

以下是 <cstring> 头文件中所有函数的列表。

复制

这些函数用于操作和复制 C 风格字符串或内存块。每个函数都有其自己的用途,具体取决于是否使用以 null 结尾的字符串或原始内存块。

常用的 C++ <cstring> 复制函数如下所示,以及它们的描述。

序号 函数及描述
1 memcpy

用于将一个缓冲区复制到另一个缓冲区。

2 memmove

用于将一个缓冲区移动到另一个缓冲区。

3 strcpy

用于将一个字符串复制到另一个字符串。

4 strncpy

用于将一个字符串中一定数量的字符复制到另一个字符串。

将一个字符串复制到另一个字符串

在下面的示例中,我们将一个字符串复制到另一个字符串。

#include <iostream>
#include <cstring>
int main() {
   char x[] = "Welcome";
   char y[50];
   strcpy(y, x);
   std::cout << "Result : " << y << std::endl;
   return 0;
}

输出

以上代码的输出如下所示:

Result : Welcome

连接

它是将两个或多个字符串连接在一起形成单个字符串的过程。常用的 C++ <cstring> 连接函数如下所示,以及它们的描述。

序号 函数及描述
1 strcat

用于连接两个字符串。

2 strncat

用于连接两个字符串中一定数量的字符。

连接两个字符串

考虑以下示例,我们将连接两个字符串。

#include <iostream>
#include <cstring>
int main() {
   char a[12] = "123";
   char b[] = "456";
   strcat(a, b);
   std::cout << "Result: " << a << std::endl;
   return 0;
}

输出

以下是以上代码的输出:

Result: 123456

比较

比较函数用于比较字符串、确定它们的顺序并检查是否相等。常用的 C++ <cstring> 比较函数如下所示,以及它们的描述。

序号 函数及描述
1 memcmp

用于比较两个缓冲区。

2 strcmp

用于比较两个字符串。

3 strcoll

根据当前区域设置比较两个字符串。

4 strncmp

比较两个字符串中一定数量的字符。

5 strxfrm

用于使用区域设置转换字符串。

比较两个字符串

让我们看一下下面的示例,我们将比较两个字符串。

#include <iostream>
#include <cstring>
int main() {
   char a[] = "Hi";
   char b[] = "Hello";
   int x = strcmp(a, b);
   if (x < 0) {
      std::cout << a << " is less than " << b << std::endl;
   } else if (x > 0) {
      std::cout << a << " is greater than " << b << std::endl;
   } else {
      std::cout << a << " is equal to " << b << std::endl;
   }
   return 0;
}

输出

如果我们运行以上代码,它将生成以下输出:

Hi is greater than Hello

搜索

搜索是指在数据集合中查找特定项目的过程。常用的 C++ <cstring> 搜索函数如下所示,以及它们的描述。

序号 函数及描述
1 memchr

在数组中搜索字符的第一次出现。

2 strchr

用于查找字符的第一次出现。

3 strcspn

返回最大初始段的长度,该段仅由在另一个字节字符串中找不到的字符组成。

4 strpbrk

查找一组分隔符中任何字符的第一个位置。

5 strrchr

用于查找字符的最后一次出现。

6 strspn

返回最大初始段的长度,该段仅由在另一个字节字符串中找到的字符组成。

7 strstr

用于查找字符的最后一次出现。

查找第一次出现

以下是示例,我们将查找字符串中字符 'L' 的第一次出现。

#include <iostream>
#include <cstring>
int main() {
   char x[] = "TUTORIALSPOINT";
   char y = 'L';
   char * z = strchr(x, y);
   if (z) {
      std::cout << "Result : " << (z - x) << std::endl;
   } else {
      std::cout << "Character Not Found." << std::endl;
   }
   return 0;
}

输出

以上代码的输出如下所示:

Result : 7
广告