4 回答

TA貢獻(xiàn)1936條經(jīng)驗(yàn) 獲得超7個(gè)贊
定義了一個(gè)長(zhǎng)度為8的由單個(gè)字符組成的數(shù)組
區(qū)別為一個(gè)是"hello",一個(gè)是['h','e','l','l','o']
對(duì)它們兩個(gè)能做的操作方法不同

TA貢獻(xiàn)2080條經(jīng)驗(yàn) 獲得超4個(gè)贊
是定義一個(gè)初始長(zhǎng)度為8的字符數(shù)組,是指單個(gè)字符,要用' '來(lái)初始化,比如'a','b',如果寫成'ab'就會(huì)出錯(cuò)
String定義的是字符串,要用" "來(lái)初始化,比如"abd",而且可以使用toCharArray()方法來(lái)把字符串轉(zhuǎn)換成字符數(shù)組。

TA貢獻(xiàn)2051條經(jīng)驗(yàn) 獲得超10個(gè)贊
/*
* 按照你給的截圖修正了下,看看是不是你要的
*/
#include<iostream>
#include<cstdio>
using namespace std;
const int MAXSTRLENGTH=99999;//字符串最大長(zhǎng)度
/*
***************字符串處理函數(shù)的聲明*************
*/
int mystrlen(char* s1);
void mystrcpy(char* s2,char* s1);
void mystrcat(char* s1,char* s2);
void mystrcut(char* s1,char* strsub,int m,int len);
void mysort(char* s1);
/*
*********************main函數(shù)********************
*/
void main(void)
{
char* s1=new char[MAXSTRLENGTH];
char* substr=new char[0];
substr[0]='\0';
int flg=-1;
cout<<"input s1:"<<endl;
gets(s1);
char* s2=new char[mystrlen(s1)+1];
s2[0]='\0';
while(flg!=0)
{
cout<<"你想對(duì)字符串s1做什么操作: input:"<<endl;
cout<<"0:exit(退出)\t\t"<<"1:copy(復(fù)制到s2中)\t\t"<<"2:cat s2(連接s2)"<<endl
<<"3:length(獲取長(zhǎng)度)\t"<<"4:cut(截取)\t\t\t"<<"5:sort(排序)"<<endl;
cin>>flg;
switch(flg)
{
case 0:exit(0);//退出
case 1:
mystrcpy(s2,s1);
cout<<"復(fù)制到s2的字符串為:"<<s2<<endl;
break;
case 2:
mystrcat(s1,s2);
cout<<"連接后的字符串為:"<<s1<<endl;
break;
case 3:
cout<<"得到字符串s1的長(zhǎng)度為:"<<mystrlen(s1)<<endl;
break;
case 4:
cout<<"輸入要截取的字符串s1的位置和長(zhǎng)度: :"<<endl;
int m,len;
cin>>m>>len;
mystrcut(s1,substr,m,len);
cout<<"截取串s1下標(biāo)為"<<m<<"開(kāi)始的"<<len<<"個(gè)字符構(gòu)成的字符串為:"<<substr<<endl;
break;
case 5:
mysort(s1);
cout<<"排序后字符串s1為:"<<s1<<endl;
break;
default:cerr<<"選擇有誤,請(qǐng)重新選擇!"<<endl;
}
cout<<"\n*******************************************************"<<endl;
}
}
/*
************字符串處理的函數(shù)實(shí)現(xiàn)*****************
*/
int mystrlen(char* s1)//字符串長(zhǎng)度
{
int i=0;
while(true)
{
if(s1[i]=='\0')
i++;
}
return i;
}
void mystrcpy(char* s2,char* s1)//字符串拷貝
{
unsigned int i=0;
unsigned int len=mystrlen(s1);
for(;i<len;i++)
{
s2[i]=s1[i];
}
s2[i]='\0';
}
void mystrcat(char* s1,char* s2)//字符串連接
{
int l1=mystrlen(s1);
int l2=mystrlen(s2);
int i=0;
for(;i<l2;i++,l1++)//此處字符串的長(zhǎng)度盡然會(huì)自動(dòng)增加,而無(wú)需用new非配內(nèi)存!?
{
s1[l1]=s2[i];
}
s1[l1]='\0';
}
void mystrcut(char* s1,char* strsub,int m,int len)//字符串截取
{
if( (m+len) > mystrlen(s1) )
{
cerr<<"Index or length is bad"<<endl;
return;
}
int j=0;
for(int i=m;i<(m+len);i++,j++)
{
strsub[j]=s1[i];
}
strsub[len]='\0';
}
void mysort(char* s1)//字符串排序
{
int n=mystrlen(s1);
char tmp;
for(int i=0;i<n-1;i++)
{
for(int j=i+1;j<n;j++)
{
if(s1[i]>s1[j])
{
tmp=s1[i];
s1[i]=s1[j];
s1[j]=tmp;
}
}
}
}
- 4 回答
- 0 關(guān)注
- 1447 瀏覽
添加回答
舉報(bào)