一、複製字符串
#include<iostream>
#include<string.h>
using namespace std;
void main()
{
char a[10],b[10];
cout<<"請輸入第一個字符串:\n";
cin.getline(a,10);
cout<<"請輸入第二個字符串:\n";
cin.getline(b,10);
cout<<"1號字符串:"<<a<<'\n';
cout<<"2號字符串:"<<b<<'\n';
int i;
for(i=0;b[i];)
a[i]=b[i++];
a[i]=b[i]; //補結束符
// 上述字符串從b賦值到a也可用strcpy(a,b);
cout<<"1號字符串:"<<a<<'\n';
cout<<"2號字符串:"<<b<<'\n';
}
二、連接字符串
#include<iostream>
using namespace std;
#include<string.h>
void getchar(char a[])
{
static int n=1;
cout<<"請輸入第"<<n<<"個字符串:\n";
cin.getline(a,13);
//13爲CR的ASCII碼,實際默認的也是ENTER
n++;
}
void main()
{
char a[20],b[10];
getchar(a);
getchar(b);
cout<<"a:"<<a<<'\n';
cout<<"b:"<<b<<'\n';
strcat(a,b);
/*或者
int i=0,j=0;
while(a[i++]); //獲得a的字符串結束符位置。
i--; //此時i已到結束符的後一位,故i--
while(b[j])
a[i++]=b[j++];
a[i]=0;
*/
cout<<"拼接後a:"<<a<<endl;
}
三、相同字符串刪除
#include<iostream>
using namespace std;
#include<string.h>
int del_samechar(char []);
void main()
{
char a[20];
cout<<"請輸入需要輸出的數組:\n";
cin.getline(a,20);
cout<<"刪除了相同的"<<del_samechar(a)<<"個字符\n";
cout<<a;
}
int del_samechar(char a[])
{
int len,n=0;
len=strlen(a);
//這個bug找了好久,前面輸出對,後面出現問題,一定是字符邊界有問題。
for(int i=0;i<len-1;i++)
{
for(int j=i+1;j<len;j++)
{
if(a[i]==a[j])
{
for(int k=j;k<=len;k++)
a[k]=a[k+1];
len=strlen(a);
i=-1; //讓循環回到初始狀態的方法
n++;
break;
}
}
}
return n;
}
以上方法較爲麻煩,可使用string類來處理字符串
#include<iostream>
using namespace std;
#include<string>
int delete_same(string s)
{
int n=0;
int len=s.size();
for(int i=0;i<len-1;i++)
{
for(int j=i+1;j<len;j++)
if(s[i]==s[j])
{
s.erase(j,1);
n++;
i=-1;
len=s.size();
break; //忘掉,i=-1,字符數組越界
}
}
cout<<s<<endl;
return n;
}
void main()
{
string s;
cout<<"請輸如需要檢查的字符:\n";
cin>>s;
cout<<"刪除了"<<delete_same(s)<<"個字符\n";
cout<<s;
//需要注意的是,此時由string定義的s應理解爲一變量,需要引用傳遞,不是字符數組。
}