哈哈,新手小白一个,看了北大郭炜老师的课来写的,主要介绍了常用字符串的用法,并没有深度刨析,本人也不懂,哈哈。看大佬的文章总感觉难以理解(我太弱了)。个人觉得举实例便于我等蒟蒻理解(手动滑稽),大佬请指教或绕行,
以下函数头文件均为`#include
1作用:进行字符串的拼接
2实列用法:strncat(s1,s2,3);//将s2的前3位字符拼接到s1的尾部
3图片实列演示:
图中将s2的前三个字符“abc",拼接到了s1末尾,所以输出s1,结果为”12345abc“
4代码:
#include
#include
#include
using namespace std;
int main()
{
char s1[100]="12345";
char s2[100]="abcdefg";
strncat(s1,s2,3);//将s2的前3位字符拼接到s1的尾部
cout<<" 1)"<<s1<<endl;
return 0;
}
1作用:将一个字符串(s1)的内容拷贝到另一个字符串(s2)中,并将s2的前n个字符覆盖
2用法实列:## 1)若拷贝的字符数小于或者等于s1的长度,则拷贝时不拷贝s1结尾的 \0 ## 2) 若拷贝的字符数大于于s1的长度,则拷贝时拷贝s1结尾的 \0 ,则在输出时输出的结果为s2,因为碰到\0就结束了啊(此处的s1,s2和下面的s1和s2不同)
#include
#include
using namespace std;
char s[100]={"acvbgehejk"};
int main()
{
char s[100];
char s1[100]="123456";//长度为6
char s2[100]="abcdefg";//长度为7
char s3[100]="ABCDE";//长度为5
strncpy(s1,s3,5);//对于括号右边的数值小于s3长度的情况下,将s3的前5位字符copy到s1,不拷贝结尾的"\0"若s1那个位置已经有了字符则将它替换
cout<<" 1)"<<s1<<endl;
strncpy(s2,s3,6);//对于括号右边的数值大于s3长度的情况下,将s3的全部类容及末尾的"\0"拷贝到s2,所以输出s2看到的结果是s3 ,因为遇到\0就结束了啊
cout<<" 2)"<<s2<<endl;
return 0;
}
3图片实列演示:
第一个输出因为拷贝的字符数等于s3的长度,所以不拷贝结尾的\0,
第二个输出因为拷贝的字符数大于s3的长度,所以拷贝结尾的\0,输出s2时,只能输出ABCDE了,因为遇到\0就结束了
1作用:比较两个字符串的前n个字符,大于输出正数,等于输出0,小于输出负数
2用法实列:
#include
#include
#include
using namespace std;
char s[100]={"acvbgehejk"};
int main()
{
char s1[100]="12345";
char s2[100]="ABCDE";
cout<<" 4)"<<strncmp(s1,s2,3)<<endl;//比较s1和s3的前三个字符 ,若s1的大于s2则输出正数,相等就输出0,小于输出负数
return 0;
}
1作用:查找字符在字符串中第一次出现的位置和最后出现的位置
2用法实列:
#include
#include
#include
using namespace std;
int main()
{
char s1[100]="ABCDE";
char *p =strchr(s1,'B');//指针指向s1中B出现的那个位置
if(p!=NULL)
cout<<p-s1<<","<<*p<<endl;//输出B在s1中的下标
else
cout<<" 5)Not Found"<<endl;
return 0;
}
#include
#include
#include
using namespace std;
int main()
{
char s1[100]="ABCDEB";
char *p =strrchr(s1,'B');//指针指向s1中B出现的那个位置
if(p!=NULL)
cout<<p-s1<<","<<*p<<endl;
else
cout<<" 5)Not Found"<<endl;
return 0;
}
1作用:查找字串第一次在字符串中出现的位置
2用法实列:
#include
#include
#include
using namespace std;
char s[100]={"acvbgehejk"};
int main()
{
char s1[100]="12345";
char *p =strstr(s1,"34");//指针指向s1中B出现的那个位置
if(p!=NULL)
{
cout<<" 6)"<<p-s1<<","<<p<<endl;//这里输出p会将所查找字符的后面字符也输出
}
else
{
cout<<" 6)Not Found"<<endl;
}
return 0;
}
1作用:以指定的分隔符把字符串分割
2用法实列:
#include
#include
#include
using namespace std;
char s[100]={"acvbgehejk"};
int main()
{
char str[]="- This,a sample string.";
char *p=strtok(str," ,.-");//注意逗号前面有一个空格哦
while(p!=NULL)
{
cout<<p<<endl;
p=strtok(NULL," ,.-");//后续调用,第一个参数必须是NULL
}
return 0;
}
1作用:将字符类型的数字转换成实数类型
2用法实列:
#include
#include
#include
using namespace std;
int main()
{
char s[100]="123.45ab";
double d=atof(s);
cout<<d<<endl;
return 0;
}