c语言串替换函数 c语言替换字符串函数( 二 )


c++语言提供了两种字符串实现 , 其中较原始的一种只是字符串的c语言实现 。与C语言的其他部分一样,它在c++的所有实现中可用,我们将这种实现提供的字符串对象,归为c-串,每个c-串char*类型的 。
标准头文件lt;cstringgt;包含操作c-串的函数库 。这些库函数表达了我们希望使用的几乎每种字符串操作 。
当调用库函数,客户程序提供的是string类型参数 , 而库函数内部实现用的是c-串,因此需要将string对象,转化为char*对象,而c_str()提供了这样一种方法,它返回const char*类型(可读不可改)的指向字符数组的指针 。例:
#includelt;iostreamgt;
//#includelt;cstringgt;
#includelt;stringgt;//使用头文件string,否则最后coutlt;lt;无法输出add_to
using namespace std;
int main()
{
string add_to="hello!";
const string add_on="baby";
const char*cfirst=add_to.c_str();
const char*csecond=add_on.c_str();
char*copy=new char[strlen(cfirst)+strlen(csecond)+1];
strcpy(copy,cfirst);
strcat(copy,csecond);
add_to=copy;
coutlt;lt;"copy:"lt;lt;copylt;lt;endl;
delete[]copy;
coutlt;lt;"add_to:"lt;lt;add_tolt;lt;endl;
return 0;
}
例(1)
函数声明:const char*c_str();
c_str()函数返回一个指向正规C字符串的指针,内容与本string串相同.
这是为了与c语言兼容,在c语言中没有string类型,故必须通过string类对象的成员函数c_str()把string对象转换成c中的字符串样式 。
注意:一定要使用strcpy()函数等来操作方法c_str()返回的指针
比如:最好不要这样:
char*c;
string s="1234";
c=s.c_str();
//c最后指向的内容是垃圾 , 因为s对象被析构,其内容被处理(纠正:s对象的析构是在s的生命周期结束时,例如函数的返回)
参考资料:
百度百科——c_str
C语言字符串替换C语言实现字符串替换函数:
#include stdio.h
#include stdlib.h
#include ctype.h
#include string.h
//字符串替换函数
/********************************************************************
*Function:my_strstr()
*Description: 在一个字符串中查找一个子串;
*Input:ps: 源;pd:子串
*Return :0:源字符串中没有子串; 1:源字符串中有子串;
*********************************************************************/
char * my_strstr(char * ps,char *pd)
{
char *pt = pd;
int c = 0;
while(*ps != '\0')
{
if(*ps == *pd)
{
while(*ps == *pd*pd!='\0')
{
ps++;
pd++;
c++;
}
}else
{
ps++;
}
if(*pd == '\0')
{
return (ps - c);
}
c = 0;
pd = pt;
}
return 0;
}
/********************************************************************
*Function:memcpy()
*Description: 复制一个内存区域到另一个区域;
*Input:src: 源;
count: 复制字节数.
*Output:dest: 复制目的地;
*Return :dest;
*********************************************************************/
void * memcpy(void * dest,const void *src,size_t count)
{
char *tmp = (char *) dest, *s = (char *) src;
while (count--)
*tmp++ = *s++;
return dest;
}
/********************************************************************
*Function:str_replace()
*Description: 在一个字符串中查找一个子串,并且把所有符合的子串用
另一个替换字符串替换 。
*Input:p_source:要查找的母字符串; p_seach要查找的子字符串;
p_repstr:替换的字符串;
*Output:p_result:存放结果;
*Return :返回替换成功的子串数量;

推荐阅读