#include<iostream>
#include<cstdio>
#include<string>
#include<cstring>
using namespace std;
void get_string_len()
{
char *str="neu.edu.cn";
int cnt=0;
for(int i=0;str[i]!='\0';i++)
{
cnt++;
}
cout<<"字符串的长度为:"<<cnt<<endl;
}
void get_letter_pos()
{
char *str="neu.edu.cn";
int pos=0;
char c='e';
while(str[pos]!=c&&str[pos]!='\0')
{
pos++;
}
cout<<"字符"<<c<<"所在的位置是:"<<pos<<endl;
}
void get_sub_str()
{
char *str="neu.edu.cn";
//i与j表示被划分的子段区域
int i=0;
int j=7;
int length = j - i;
//指针必须分配内存!
char *substr = new char[length + 1];
int pos=0;
while(i<j)
{
substr[pos++]=str[i++];
}
//最后一步一定要加'\0'
substr[pos]='\0';
for(int i=0;substr[i]!='\0';i++) cout<<substr[i];
cout<<endl;
delete[] substr;//释放动态分配的内存
}
//prefix表示只操作前m个元素
void get_pre_sub_str()
{
char *str="neu.edu.cn";
int m=7;
int length=m;
//指针必须分配内存!
char *substr = new char[length + 1];
int pos=0;
while(pos<m)
{
substr[pos]=str[pos];
pos++;
}
//最后一步一定要加'\0'
substr[pos]='\0';
for(int i=0;substr[i]!='\0';i++) cout<<substr[i];
cout<<endl;
delete[] substr;//释放动态分配的内存
}
//suffix表示只操作后m个元素
void get_suffix_sub_str()
{
char *str="neu.edu.cn";
int len=strlen(str);
//cout<<strlen(str)<<endl;
int pos=0;
int m=4;//m表示要操作的后端字符
char substr[1000];
for(int i=len-m;i<len;)
{
//cout<<substr[pos]<<endl;
substr[pos++]=str[i++];
}
substr[pos]='\0';
for(int i=0;substr[i]!='\0';i++) cout<<substr[i];
cout<<endl;
}
//实现字符串连接操作
void get_concat_str()
{
char str1[]="NEUAI";
char str2[]="20213546";
cout<<"字符串A为:";
for(int i=0;str1[i]!='\0';i++) cout<<str1[i];
cout<<endl;
cout<<"字符串B为:";
for(int i=0;str2[i]!='\0';i++) cout<<str2[i];
cout<<endl;
//实现str1+str2的连接操作
char constr[1000];
int i=0;
int j=0;
int pos=0;
while(str1[i]!='\0')
{
constr[pos++]=str1[i++];
}
while(str2[j]!='\0')
{
constr[pos++]=str2[j++];
}
constr[pos]='\0';
for(int i=0;constr[i]!='\0';i++) cout<<constr[i];
cout<<endl;
}
//实现字符串比较操作
//手写strcmp函数
int compare_strings(const char *s1,const char *s2)
{
while(*s1&&(*s1==*s2))
{
s1++;
s2++;
}
return *(unsigned char*)s1-*(unsigned char*)s2;
}
void get_compare_str()
{
char str1[]="NEUAI";
char str2[]="NEUAI001";
cout<<"字符串A为:";
for(int i=0;str1[i]!='\0';i++) cout<<str1[i];
cout<<endl;
cout<<"字符串B为:";
for(int i=0;str2[i]!='\0';i++) cout<<str2[i];
cout<<endl;
int res=compare_strings(str1,str2);
if(res==0) cout<<"字符串AB相等!"<<endl;
else if(res<0) cout<<"字符串A>字符串B!"<<endl;
else cout<<"字符串A<字符串B!"<<endl;
}
int main()
{
cout<<"********获取字符串长度操作********"<<endl;
get_string_len();
cout<<"********获取字符位置操作********"<<endl;
get_letter_pos();
cout<<"********获取指定字串操作********"<<endl;
get_sub_str();
cout<<"********获取前m个字符操作********"<<endl;
get_pre_sub_str();
cout<<"********获取后m个字符操作********"<<endl;
get_suffix_sub_str();
cout<<"********连接两个字符串操作********"<<endl;
get_concat_str();
cout<<"********比较两个字符串操作********"<<endl;
get_compare_str();
cout<<"**************************************"<<endl;
cout<<"所有操作全部结束!"<<endl;
cout<<"**************************************"<<endl;
return 0;
}
字符串的基本操作
最新推荐文章于 2024-09-11 15:28:58 发布