在C中进行字符串的操作可以说是非常频繁.先看一下的例子.
#include <iostream>
using namespace std;
void swap(char *src, char *des) {
char *t; t = src; src = des; des = t; } int main() { char a[] ="abc"; char b[] ="def"; swap(a,b); cout << a << endl; cout << b << endl; return 0; }
|
但是,结果却交没有交换.也就是地址并没有交换.也就是说地址并没有交换.用strcpy来代替,发现是可以的.
void swap(char *src, char *des) { char t[100]; strcpy(t,src); strcpy(src,des); strcpy(des,t);
}
|
/*这个最简单,效率也高,不过不能操作静态字符数组*/
void strswap(char **pStr1, char **pStr2)
{
char *temp = *pStr1;
*pStr1 = *pStr2;
*pStr2 = temp;
}
下面的内容来自转载,不过很有参考价值:
交换两个字符串数据。
一:字符指针
- int main()
- {
- void charsort2(char ** ,char **);
- char * s1="abc";
- char * s2="baihe";
- charsort2 (&s1,&s2);
- cout<
- cout<
- return 0;
- }
- void charsort2(char **s1,char **s2)
- {
- char *p;
- p=*s1;
- *s1=*s2;
- *s2=p;
- }
二:字符数组
- int main()
- {
- void charsort( char * ,char * );
- char s1[7]="abc";
- char s2[7]="baihe";
- charsort(s1,s2);
- cout<
- cout<
- return 0;
- }
- void charsort(char *s1,char *s2)
- {
- char p[7];
- strcpy(p,s1);
- strcpy(s1,s2);
- strcpy(s2,p);
- }
三:字符串
- int main()
- {
- void strsort(string *,string *);
- string s1="abc";
- string s2="baihe";
- strsort(&s1,&s2);
- cout<
- cout<
- return 0;
- }
- void strsort(string *s1,string *s2)
- {
- string p;
- p=*s1;
- *s1=*s2;
- *s2=p;
- }
四:引用
- int main()
- {
- void strsort(string &,string &);
- string s1="abc";
- string s2="baihe";
- strsort(s1,s2);
- cout<
- cout<
- return 0;
- }
- void strsort(string & s1,string &s2)
- {
- string p;
- p=s1;
- s1=s2;
- s2=p;
- }
多谢论坛上朋友的分享.以下为新添方法:
五:指针引用:
- int main()
- {
- void charsort2(char*& ,char*&);
- char * s1="abc";
- char * s2="baihe";
- charsort2 (s1,s2);
- cout<
- cout<
- return 0;
- }
- void charsort2(char *&s1,char *&s2)
- {
- char *p;
- p=s1;
- s1=s2;
- s2=p;
- }
阅读(2926) | 评论(2) | 转发(0) |