您的位置:首页 > 其它

字符串常见操作

2016-02-21 15:12 656 查看

1.strcpy(p, p1) 复制字符串

原型:char* strcpy(char* des,const char* source);

功能:将字符串source拷贝到字符串des中 ,copy完后返回目标串地址

例程:

#include <iostream>
#include <cstring>
using namespace std;

int main()
{
char str1[10] = "TsinghuaK";
char str2[10] = "Computer";
cout <<strcpy(str1,str2)<<endl;
return 0;
}


运行结果是:Computer

第二个字符串将覆盖掉第一个字符串的所有内容!

注意:在定义数组时,字符数组1的字符串长度必须大于或等于字符串2的字符串长度。不能用赋值语句将一个字符串常量或字符数组直接赋给一个字符数组。所有字符串处理函数都包含在头文件string.h中。

2.strncpy(p, p1, n) 复制指定长度字符串

原型:char* strncpy(char* dest,char* src,size_tn);

功能:strncpy:将字符串src中前size_tn个字符拷贝到字符串dest中。

例程:

#include <iostream>
#include <cstring>
using namespace std;

int main()
{
char str1[10] = "Tsinghua";
char str2[10] = "Computer";
cout <<strncpy(str1,str2,3)<<endl;
return 0;
}


运行结果:Comnghua

注意:字符串src中前size_tn个字符将覆盖掉字符串dest中前size_tn个字符!

3.strcat(p, p1) 附加字符串

原型:char *strcat(char *dest,char *src);

功能:将字符串src接到字符串dest的后面 。

例程:

#include <iostream>
#include <cstring>
using namespace std;

int main()
{
char str1[] = "Tsinghua";
char str2[] = "Computer";
cout <<strcat(str1,str2)<<endl;
return 0;
}


运行结果:TsinghuaComputer

注意:连接后新字符串的长度为两个字符串长度之和。进行字符串连接后,字符串1的结尾符将自动被去掉,在结尾串末尾保留新字符串后面一个结尾符。

4.strncat(p, p1, n) 附加指定长度字符串

原型:char strncat(char dest,char * source,size_tn);

功能:将字符串source的前size_tn个字符接到字符串dest的后面。

#include <iostream>
#include <cstring>
using namespace std;

int main()
{
char str1[] = "Tsinghua";
char str2[] = "Computer";
cout <<strncat(str1,str2,3)<<endl;
return 0;
}


运行结果:TsinghuaCom

5.strlen(p) 取字符串长度

原型:unsigned int strlen(char *s);

功能:统计字符串s中字符的个数

例程:

#include <iostream>
#include <cstring>
using namespace std;

int main()
{
char str[100];
cout <<"请输入一个字符串:";
cin >>str;
cout <<"The length of the string is :"<<strlen(str)<<"个"<<endl;
return 0;
}


运行结果The length of the string is x 个(x为你输入的字符总数字)

注意:strlen函数的功能是计算字符串的实际长度,不包括’\0’在内。另外,strlen函数也可以直接测试字符串常量的长度,如:strlen(“Welcome”)。

6.strcmp(p, p1) 比较字符串

原型:int strcmp(const char *s1,const char *s2);

功能:比较两个字符串s1和s2。

例程:

#include <iostream>
#include <cstring>
using namespace std;

int main()
{
char buf1[] = "aaa";
char buf2[] = "bbb";
char buf3[] = "ccc";
int ptr;
ptr = strcmp(buf2,buf1);
if(ptr > 0)
cout <<"Buffer 2 is greater than buffer 1"<<endl;
else
cout <<"Buffer 2 is less than buffer 1"<<endl;
ptr = strcmp(buf2,buf3);
if(ptr > 0)
cout << "Buffer 2 is greater than buffer 3" <<endl;
else
cout <<"Buffer 2 is less than buffer 3"<<endl;
return 0;
}


运行结果是:

Buffer 2 is less than buffer 1

Buffer 2 is greater than buffer 3

7.strncmp(p, p1, n) 比较指定长度字符串

原型:int strncmp ( const char * str1, const char * str2, size_t num );

功能:比较字符串string1和string2大小,只比较前面count个字符. 比较过程中, 任何一个字符串的长度小于count, 则count将被较短的字符串的长度取代. 此时如果两串前面的字符都相等, 则较短的串要小.

返回值< 0, 表示string1的子串小于string2的子串;

返回值为0, 表示string1的子串等于string2的子串;

返回值> 0, 表示string1的子串大于string2的子串.

例程:

#include <iostream>
#include <cstring>
using namespace std;

int main()
{
char buf1[] = "xiandianzi";
char buf2[] = "hangzhoudianzi";
char buf3[] = "hangdianzi";
int ptr;
ptr = strncmp(buf2,buf1,3);
if(ptr > 0)
cout <<"Buffer 2 is greater than buffer 1"<<endl;
else
cout <<"Buffer 2 is less than buffer 1"<<endl;
ptr = strncmp(buf2,buf3,5);
if(ptr > 0)
cout << "Buffer 2 is greater than buffer 3" <<endl;
else
cout <<"Buffer 2 is less than buffer 3"<<endl;
return 0;
}


结果:



8.strchr(p, c) 在字符串中查找指定字符

原型:char *strchr(const char *s,char c);

功能:查找字符串s中首次出现字符c的位置。

例程:

#include <iostream>
#include <cstring>
using namespace std;

int main()
{
char string[17] = "Thisisastring";
char *ptr,c='r';
ptr=strchr(string,c);
if(ptr)
printf("The character %c is at position:%s\n",c,ptr);
else
printf("The character was not found\n");
return 0;
}


结果:



注意:strchr返回的是首次出现字符c的剩余字符串

9.strstr(p, p1) 查找字符串

原型:char *strstr(char *str1, const char *str2);

str1:被查找目标

str2:查找对象

功能:用于判断字符串str2是否是str1的子串。如果是,则该函数返回str2在str1中首次出现的地址;否则,返回NULL。

例程:

#include <iostream>
#include <cstring>
using namespace std;

int main()
{
char str[]="1234xyz";
char *str1=strstr(str,"34");
cout << str1 << endl;
return 0;
}


结果:34xyz
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: