字符串数组(一维、二维)指针
关于探究原因
最近心血来潮编一些函数,想以后用得着。结果一个和字符串数组的指针有关的函数真的要把我搞得要死。因此在这里我要把这些惨痛经历记录下来,以免下次再犯这些愚蠢而浪费时间的错误。
先来看swap函数
首先对于c++的swap函数一定是不会陌生的。可以快速编写以下代码:
#include <bits/stdc++.h>
using namespace std;
template <typename T>
void swap_(T *a,T *b)
{
T t=*a;
*a=*b;
*b=t;
}
int main(){
string a="I'm";
string b="Peter";
swap_(a,b);
cout<<"a="<<a<<" b="<<b<<endl;
}
/*结果是:
a=Peter b=I'm
*/
但是这个代码对于一维的字符串组是没毛用的。(可以自行尝试)
因此受到c++ sort函数中a+n的用法,我也尝试这样做,于是编成以下代码:
#include <bits/stdc++.h>
using namespace std;
template <typename T>
void swap_(T *a,T *b, int n=1)
{
T t;
for(int i=0;i<n;i++)
{
t=*(a+i);
*(a+i)=*(b+i);
*(b+i)=t;
}
}
int main(){
string a[2]={
"I"," am"};
string b[2]=