字符串连接 C/C++

        在编程中由于路径的问题会经常遇到字符串连接的问题,并且好多时候还是不同类型的字符串拼接,在这把最近几天接触的有关这方面的总结一下,以备以后不时之需。

 

       一:最强大的sprintf()

      它可以把C中几乎所有的数据类型转化为char保存在字符串中。这个函数在百度百科上介绍的非常清晰,在这我只写一个小的DEMO,如果看完还不明白的话就去这个网站仔细看看。http://baike.baidu.com/view/1295144.htm

char* who = "I";
char* whom = "CSDN";
int    num = 22;
sprintf(s, "%s love %s  for  %d  day", who, whom,num); //产生:"I love CSDN   for  22   day "    呵呵,例子是百度上的,本来只有i   love  csdn的,但为了说明其他类型的也可以直接转换就加了一个int,不过加上后感觉没什么味道了。。大笑,最好看看上面那个链接,里边很详细的介绍了可能出现的问题。我用到的是下面这个代码,感觉很帅气。。
 
char  *to_all;
offeset = 0;
offset += sprintf(to_all + offset, "%lf,", dbLongitude);  //dbLongitude  是double类型的
      offset += sprintf(to_all + offset, "%lf,", dbLatitude);
      offset += sprintf(to_all + offset, "%f,", fDirect);                     //fspeed是float类型的
      offset += sprintf(to_all + offset, "%f,", fSpeed);
      offset += sprintf(to_all + offset, "%d,", sHigh);                        //shigh是int的
      offset += sprintf(to_all + offset, "%d,", cSatelliteNumber);
      offset += sprintf(to_all + offset, "%s;", second);                          //second是字符串
最后把这么多的不同数据类型的数据全部转化为char 类型,并存储在to_all中。我做的时候由于需要加了','    如果不需要自己去掉就好了,就是“%f,”中的这个','     。。。。
二:strcat()

       原型

extern char *strcat(char *dest,char *src);

      用法

#include <string.h>
在C++中,则存在于<cstring>头文件中。

      功能

把src所指字符串添加到dest结尾处(覆盖dest结尾处的'\0')并添加'\0'。

      说明

src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。
返回指向dest的 指针
以上就是度娘给出的关于strcat()的标准答案。虽然很简单还是附上一个小DEMO吧。
char  temp[10] = "hello";
char  *str = "world";
strcat(temp,str);
printf("temp = %s\n",temp);
结果是helloworld。。。。。
 
       三:最简单的一种方法转化为CString类型,直接相加就OK。当然如果有CString的话就最好是MFC下了,不然的话会出很多意想不到的问题。
 
       四:最后一个方法是纯C的方法,就是我们刚学习C语言的时候用到的。用指针判断'\0',在一个for循环中一直只向下一个。。。。具体代码就贴一个网上的。如下
 
            [cpp]
           #include <stdio.h> 

           #include <stdlib.h>  

           void contact(char *str,constchar *str1,constchar *str2); 

           int main() 

           { 

               char str[201], str1[101], str2[101]; 

               while(scanf("%s%s",str1,str2) != EOF) 

               { 

                  contact(str, str1, str2);

                   printf("%s\n",str); 

               } 

               return 0; 

           } 

             /*Description:字符串连接函数*/ 

           void contact(char *str,constchar *str1,constchar *str2) 

           { 

               int i, j;    

               for(i = 0; str1[i] !='\0'; i ++) 

               { 

                   str[i] = str1[i]; 

               } 

               for(j = 0; str2[j] != '\0'; j ++) 

               { 

                   str[i + j] = str2[j]; 

               } 

               str[i + j] ='\0'

           } 

 
 
如果大家这方面遇到问题的话可以直接在下面回复我,尽可能的一起解决。。。。
以上代码有可能会是中文输入法下 敲上去的,如果编译出错最后自己敲一遍。。。
如果牵涉到C++中CString和char*的转化问题,可以看下我的这篇关于类型转化的小总结。
 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值