5.1字符串操作函数(以str开头的字符串处理函数默认遇到'\0'结束操作)
5.1.1 测量字符串的长度strlen()
strlen() 函数用于计算一个字符串的长度。
#include <string.h> //注意:该头文件必须包含
size_t strlen(const char *s);
// s指的是需要测量字符串的首地址
例:
char str[] = "Hello";
int length = strlen(str); // length 等于 5

遇到 '\0' 表示字符串的结尾,计算长度不包含该标志符号
例如:
5.1.2 字符串拷贝函数strcpy
1.strcpy或者strcpy_s将指定的字符串复制到目地地址
#include <string.h>
char *strcpy(char *dest,Tconst char *src);
char *strncpy(char *dest,const char *src,size_t n);
dest:目的空间地址
src: 原字符串的首元素地址
这个比较常用,经常会在一些项目中使用到。
案例:

注意:此时我使用的qt5.13.2对这个函数进行了警告:warning: 'strcpy' is deprecated: This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
这个警告信息是由于strcpy()函数被标记为不安全的,并且在一些编译环境中被认为是不建议使用的。如果你希望消除这个警告,可以考虑使用更安全的函数strcpy_s(C++11引入)

此时就没有警告信息了
2.strncpy 将指定长度的字符串复制到目标字符串
strncpy 函数用于将指定长度的字符串复制到目标字符串中。它的原型如下:
char *strncpy(char *destination, const char *source, size_t num);
destination:目标字符串,即要将源字符串复制到的位置。source:源字符串,即要被复制的字符串。num:要复制的字符数的最大限制。
strncpy 函数会将 source 中的最多 num 个字符复制到 destination 中,并且添加一个 null 字符,以确保目标字符串以 null 结尾。如果 source 的长度小于 num,那么 destination 中剩余的位置会被填充为 null 字符。
这个函数可用于避免 strcpy 和 strcpy_s 中的潜在缓冲区溢出问题,因为它允许你指定要复制的最大字符数。
以下是一个使用 strncpy 函数的示例:
#include <cstring>
int main() {
char source[] = "Hello, world!";
char destination[20];
strncpy(destination, source, 10); // 将 source 中的最多 10 个字符复制到 destination 中
destination[10] = '\0'; // 手动添加 null 字符,以确保字符串结束
return 0;
}
在这个示例中,source 中的最多 10 个字符被复制到 destination 中。为了确保 destination 以 null 结尾,我们手动添加了 null 字符。
5.1.3 字符串追加函数strcat
在C++中,字符串追加函数是strcat()。该函数用于将一个字符串追加到另一个字符串的末尾。以下是strcat()函数的基本用法:
#include <cstring> // 包含头文件以使用strcat函数
char str1[20] = "Hello, ";
char str2[] = "world!";
strcat(str1, str2);
在这个例子中,str1是目标字符串,str2是我们想要追加到str1末尾的源字符串。strcat()函数将str2中的内容追加到str1的末尾,结果会保存在str1中。
需要注意的是,为了能够容纳目标字符串和源字符串的合并,目标字符串数组str1必须足够大。
另外,C++标准库中的string类也提供了更安全和方便的字符串操作方法,推荐在C++中使用string类来处理字符串。使用string类,字符串追加可以通过运算符+来完成,例如:
#include <string>
std::string str1 = "Hello, ";
std::string str2 = "world!";
std::string result = str1 + str2;
使用string类,我们可以直接使用+运算符将两个字符串合并,并将结果保存在新的string对象result中。这种方式更为直观和安全。
5.1.4 字符串比较strcmp
C++中,可以使用strcmp()函数来比较两个字符串。该函数用于按照字典顺序比较两个字符串,并返回一个整数值来表示比较的结果。
strcmp()函数的原型如下:
int strcmp(const char *str1, const char *str2);
int strncmp(const char *str1, const char *str2, size_t n);//根据n长度比较
str1:要比较的第一个字符串。str2:要比较的第二个字符串。
函数返回值:
- 如果
str1小于str2,则返回一个负整数。 - 如果
str1等于str2,则返回0。 - 如果
str1大于str2,则返回一个正整数。
以下是strcmp()函数的一个简单示例:
#include <string> // 包含头文件以使用strcmp函数
const char *str1 = "apple";
const char *str2 = "banana";
int result = strcmp(str1, str2);
if (result < 0) {
// str1 小于 str2
} else if (result > 0) {
// str1 大于 str2
} else {
// str1 等于 str2
}
在这个示例中,strcmp()函数将比较str1和str2的字典顺序,并将结果保存在result中。根据result的值,我们可以判断str1和str2的大小关系。
需要注意的是,C++标准库中的string类也提供了比较字符串的方法,如果在C++中使用string类来表示字符串,可以通过<, <=, >, >=, ==, !=等运算符来比较字符串,从而使比较更直观和易读。




![[Linux] dns域名解析服务](https://img-blog.csdnimg.cn/7a8fab32e01647219ec6e3ca060090bf.png)














