- C 标准库
- C 标准库
- C++ 标准库
- C++ 库 - 首页
- C++ 库 - <fstream>
- C++ 库 - <iomanip>
- C++ 库 - <ios>
- C++ 库 - <iosfwd>
- C++ 库 - <iostream>
- C++ 库 - <istream>
- C++ 库 - <ostream>
- C++ 库 - <sstream>
- C++ 库 - <streambuf>
- C++ 库 - <atomic>
- C++ 库 - <complex>
- C++ 库 - <exception>
- C++ 库 - <functional>
- C++ 库 - <limits>
- C++ 库 - <locale>
- C++ 库 - <memory>
- C++ 库 - <new>
- C++ 库 - <numeric>
- C++ 库 - <regex>
- C++ 库 - <stdexcept>
- C++ 库 - <string>
- C++ 库 - <thread>
- C++ 库 - <tuple>
- C++ 库 - <typeinfo>
- C++ 库 - <utility>
- C++ 库 - <valarray>
- C++ STL 库
- C++ 库 - <array>
- C++ 库 - <bitset>
- C++ 库 - <deque>
- C++ 库 - <forward_list>
- C++ 库 - <list>
- C++ 库 - <map>
- C++ 库 - <multimap>
- C++ 库 - <queue>
- C++ 库 - <priority_queue>
- C++ 库 - <set>
- C++ 库 - <stack>
- C++ 库 - <unordered_map>
- C++ 库 - <unordered_set>
- C++ 库 - <vector>
- C++ 库 - <algorithm>
- C++ 库 - <iterator>
- C++ 高级库
- C++ 库 - <any>
- C++ 库 - <barrier>
- C++ 库 - <bit>
- C++ 库 - <chrono>
- C++ 库 - <cinttypes>
- C++ 库 - <clocale>
- C++ 库 - <condition_variable>
- C++ 库 - <coroutine>
- C++ 库 - <cstdlib>
- C++ 库 - <cstring>
- C++ 库 - <cuchar>
- C++ 库 - <charconv>
- C++ 库 - <cfenv>
- C++ 库 - <cmath>
- C++ 库 - <ccomplex>
- C++ 库 - <expected>
- C++ 库 - <format>
- C++ 库 - <future>
- C++ 库 - <flat_set>
- C++ 库 - <flat_map>
- C++ 库 - <filesystem>
- C++ 库 - <generator>
- C++ 库 - <initializer_list>
- C++ 库 - <latch>
- C++ 库 - <memory_resource>
- C++ 库 - <mutex>
- C++ 库 - <mdspan>
- C++ 库 - <optional>
- C++ 库 - <print>
- C++ 库 - <ratio>
- C++ 库 - <scoped_allocator>
- C++ 库 - <semaphore>
- C++ 库 - <source_location>
- C++ 库 - <span>
- C++ 库 - <spanstream>
- C++ 库 - <stacktrace>
- C++ 库 - <stop_token>
- C++ 库 - <syncstream>
- C++ 库 - <system_error>
- C++ 库 - <string_view>
- C++ 库 - <stdatomic>
- C++ 库 - <variant>
- C++ STL 库速查表
- C++ STL - 速查表
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