strlen()函数是求字符串长度的函数,其头文件为#include<string.h>,如果是C++11以上的版本可以只包含#include<iostream>即可。主要是用于求字符数组的长度。当是字符串string类时,可以用字符串名.size()实现。
#include<stdio.h>
#include<string.h>
char ch[]={"abcde"};
int main(){
printf("%d",strlen(ch));
return 0;
}
最后输出为5
在C和C++中,strcpy函数用于复制一个字符串到另一个字符串。它定义在#include<string.h>头文件中。这个函数接收两个参数:目标字符串的指针和源字符串的指针。它会将源字符串(包括终止的空字符 \0
)复制到目标字符串,用于字符数组。当是字符串string类时,可以用字符串1=字符串2实现。
strcpy(char *str2,cosnt char *str1)
str2是拷贝完成的目标字符串,str1是被拷贝的字符串。
#include<stdio.h>
#include<string.h>
char str1[]={"abcde"};
char str2[]={"aaaaa"};
int main(){
printf("原str2为: %s\n",str2);
strcpy(str2,str1);
printf("拷贝完的字符串为: %s",str2);
return 0;
}
strncpy函数用于将一个字符串复制到另一个字符串,同时允许你指定最大复制的字符数。这个函数定义在#include<string.h> 头文件中,它提供了比strcpy更多的安全性,因为它可以防止缓冲区溢出。
char *strncpy(char *dest, const char *src, size_t n);
多了一个size参数,意思是将src的前n位复制到dest字符串前n位中。
#include<stdio.h>
#include<string.h>
char str1[]={"abcde"};
char str2[]={"aaaaa"};
int main(){
printf("原str2为: %s\n",str2);
strncpy(str2,str1,3);
printf("拷贝完的字符串为: %s",str2);
return 0;
}
在C和C++中,strcat函数用于将一个字符串连接到另一个字符串的末尾。它同样定义在#include<string.h>头文件中。strcat会将源字符串附加到目标字符串的末尾,并在连接后的字符串末尾添加一个空字符 \0
来确保它是一个有效的字符串。
char *strcat(char *dest, const char *src);
dest: 目标字符串的指针。src: 要连接的源字符串。作用是将src字符串拼接到dest字符串后面。
#include<stdio.h>
#include<string.h>
char str1[]={"abcde"};
char str2[]={"aaaaa"};
int main(){
printf("原str2为: %s\n",str2);
strcat(str2,str1);
printf("拷贝完的字符串为: %s",str2);
return 0;
}
\0
。如果目标数组空间不足,将会导致缓冲区溢出。\0
结尾,因为strcat会从目标字符串的空字符位置开始复制源字符串。strnact 函数用于将一个字符串追加到另一个字符串的末尾,同时限制追加的字符数量。这个函数定义在#include<string.h>头文件中。
char *strncat(char *dest, const char *src, size_t n);
多了一个size参数,意思是将src的前n位拼接到dest字符串后面。
#include<stdio.h>
#include<string.h>
char str1[]={"abcde"};
char str2[]={"aaaaa"};
int main(){
printf("原str2为: %s\n",str2);
strncat(str2,str1,3);
printf("拷贝完的字符串为: %s",str2);
return 0;
}
strcmp函数用于比较两个字符串,并根据比较结果返回一个整数。这个函数定义在#include<string.h>头文件中。注意它们比较时会区分大小写的,根据ASCII码值的大小比较,用于字符数组。比较时,会先进行比较第一个,第一个相同再比较第二个,第二个相同比较第三个,知道找到不同的为止。
int strcmp(const char *str1, const char *str2);
str1是第一个字符串,str2是第二个字符串。
#include<stdio.h>
#include<string.h>
char str1[]={"abcde"};
char str2[]={"ABCDE"};
int main(){
int num=strcmp(str1,str2);
if(num<0){
printf("str1<str2");
}else if(num>0){
printf("str1>str2");
}else{
printf("str1=str2");
}
return 0;
}
最后输出str1>str2
strncmp函数用于将一个字符与另一个字符串进行比较,同时限制比较的字符数量。这个函数是头文件为#include<string.h>,比较方式与返回值跟strcmp一样。
int strncmp(const char *str1, const char *str2, size_t n);
与strcmp不同多了一个size参数,含义是str1的前n位与str2的前n位进行比较。
#include<stdio.h>
#include<string.h>
char str1[]={"abcde"};
char str2[]={"abCDE"};
int main(){
int num=strncmp(str1,str2,3);
if(num<0){
printf("str1<str2");
}else if(num>0){
printf("str1>str2");
}else{
printf("str1=str2");
}
return 0;
}
最后输出str1>str2
strstr函数用于在一个字符串中查找第一次出现另一个子字符串的位置。如果找到了子字符串,它返回一个指向该位置的指针;如果没有找到,它返回NULL。它会从字符串的第一个位置向后搜索,针对于字符数组。
char *strstr(const char *haystack, const char *needle);
haystack为要搜索的字符串,needle是需要查找的字串。
成功时,返回指向haystack中第一次出现needle的位置的指针。
如果没有找到needle,则返回NULL。
#include<stdio.h>
#include<string.h>
char str1[]={"abcde"};
char str2[]={"cde"};
int main(){
char *s=strstr(str1,str2);
printf("查找的字串为:%s\n",s);
printf("下标为:%d",s-str1);
return 0;
}
C++ 标准库中的string类提供了一个substr方法来返回字符串的子串。C语言中没有内置的 substr函数,但可以通过使用strncpy等函数来实现类似的功能。
同类的字符串截取还有一种,子符串名.substring(开始下标,结束下标) ,返回被截取的字符串,左闭右开。
substr(star,len)
star为开始下标,len为截取长度
#include<iostream>
#include<cstring>
using namespace std;
string s="abcdef";
int main(){
string s1=s.substr(2,3);
cout<<"截取的字符串为:";
cout<<s1<<endl;
return 0;
}
tolower和toupper是两个标准库函数,用于将单个字符转换为小写或大写。这两个函数定义在#include<ctype.h>头文件中(C语言)或 #include<cctype>头文件中(C++)。
int tolower(int c);//转换小写
int toupper(int c);//转换大写
#include<iostream>
#include<cctype>
using namespace std;
int main(){
printf("%d %c\n",tolower('A'),tolower('A'));
printf("%d %c\n",toupper('a'),toupper('a'));
return 0;
}
使用tolower和toupper函数可以方便地进行大小写转换,特别是在需要不区分大小写的比较或处理用户输入时。
在C++中,c_str()是string类的一个成员函数,它返回一个指向以空字符终止的字符数组的指针,该数组包含与string对象相同的序列。这个字符数组通常用于与那些需要C风格字符串(以null结尾的字符数组)的函数进行交互。
const char* std::string::c_str() const;
用法为字符串名.c_str(),会返回一个字符串的指针。该函数常用于跟strcpy函数一起使用,用于将转化来的字符串指针拷贝给一个新的字符数组。
#include <iostream>
#include <cstring>
using namespace std;
char cstr[10];
int main() {
string str = "Hello, World!";
strcpy(cstr,str.c_str());
cout<<cstr<<endl;
return 0;
}
最后会输出一个字符数组Hello, World!