字符串相关

来源:互联网 发布:剑三男神捏脸数据 编辑:程序博客网 时间:2024/04/30 00:54

整数转化为字符串采用+‘0’  再逆序的办法

字符串转换为整数采用减‘0’ 再乘10累加的办法

char*strcpy(char *dest,char *src)  返回值为char* 是为了实现链式表达式

字符数组和字符串最明显的区别就是字符串会被默认加上结束符'\0'  

int sprintf(char *buffer,char*format,[argument]...)     以符串形式输出到内存   可以用于把整形数打印到字符串中 所以在大多数场合可以代替itoa     itoa(68,buffer,10);

sprintf 还具有连接字符串的功能   在许多场合可以代替strcat

char * who=''T";char *whom"Duantao"     char buffer[100]   sprintf(buffer,"%s love %s",who,whom);


//以下为一些字符串的相关操作。

#include<iostream>#include<cstdio>#include<cstdlib>#include<string>#include<assert.h>using namespace std;//字符串拷贝函数的实现Strcpy()char *Strcpy(char *dest,char *src)//之所以返回char* 是为了实现链式表达式{     assert((dest!=NULL)&&(src!=NULL)); char *temp=dest; while((*dest++=*src++)!='\0'); return temp;}//转换字符串格式为原来字符串里的字符+该字符连续出现的个数例如将字符串 1233422222 变为1121324125string ChangeString(string input)//将字符串 1233422222 变为1121324125{     string result; for(int i=0;i<input.length();) {      result.push_back(input[i]);  if(input[i]!=input[i+1])  {      result.push_back('1');  i++;  }  else  {       int count=1;   while(input[i]==input[i+1])   {        count++;i++;   }   i++;//注意此处还有一个加加   result.push_back(count+'0');  } } return result;}//转换字符串格式为原来字符串里的字符+该字符连续出现的个数例如将字符串 1233422222 变为1121324125char* ChangeString2(char* input)//将字符串 1233422222 变为1121324125{     if(input==NULL) { return NULL; } int length=strlen(input); char *result=new char[length*2+1]; int k=0; for(int i=0;i<length;) {      result[k++]=input[i];  if(input[i]!=input[i+1])  {      result[k++]='1';  i++;  }  else  {       int count=1;   while(input[i]==input[i+1])   {        count++;i++;   }   i++;//注意此处还有一个加加   result[k++]=count+'0';  } } result[k++]='\0'; return result;}//做一个程序模拟c++中strstr()函数,strstr() 函数搜索一个字符串在另一个字符串中的第一次出现。找到所搜索的字符串,则该函数返回第一次匹配的字符串的地址;如果未找到所搜索的字符串,则返回NULLchar* StrStr(char *str,char* substr)//用最简单的模式匹配实现{     if(str==NULL||substr==NULL) {     return NULL; } int length1=strlen(str); int length2=strlen(substr); for(int i=0;i<length1;i++) {     int temp=i;//用于主串的指针回溯 int j=0;//子串的指针每次都回溯为0 if(str[i]==substr[j]) {      while(str[i]==substr[j])  {      i++;  j++;  }  if(substr[j]=='\0')  {       return &str[temp];  }  else  {      i=temp;//主串指针回溯  } } }}int main(){char buffer[100];cout<<sprintf(buffer,"%d",123)<<endl;cout<<buffer<<endl;//cout<<"hello world"<<endl;//StrStr()函数测试char ch1[]="12345678";char ch2[]="234";cout<<StrStr(ch1,ch2)<<endl;//ChangeString2和ChangeString()函数测试char ch[]="1233422222";cout<<ChangeString2(ch)<<endl;string str;getline(cin,str);cout<<ChangeString(str)<<endl;    return 0;}


0 0
原创粉丝点击