#include<iostream>
using namespace std;
#include<string.h>
#define Max 1024
typedef struct
{
char data[Max];
int curlen;
}SqString;
//创建
void create_str(SqString &s)
{
cin >> s.data;
s.curlen = strlen(s.data);
}
//字符串的输出
void Print_str(SqString s)
{
cout << s.data << endl;
}
//求字符串的长度
int StrLenth(SqString &s)
{
int j = 0;
if (s.data[j] != '\0')
return s.curlen;
}
//字符串的连接
void Concat_str(SqString &s1, SqString &s2, SqString &s)
{
int j, k;j = k = 0;
while (s1.data[j] != '\0')
s.data[k++] = s1.data[j++];
j = 0;
while (s2.data[j] != '\0')
s.data[k++] = s2.data[j++];
s.data[k] = '\0';
}
//字符串的比较
int Comp_str(SqString &s, SqString &t)
{
int i = 0;
while (s.data[i] == t.data[i] && s.data[i] != '\0')
i++;
return (s.data[i] - t.data[i]);
}
//求子串
int Sub_str(SqString &t, SqString &s, int pos, int len)
{
int slen, j;
slen = StrLenth(s);
if (pos<1 || pos>slen || len<0 || len>slen - pos + 1)
return 0;
for (j = 0;j<len;j++)
t.data[j] = s.data[pos + j - 1];
t.data[len] = '\0';
return 1;
}
//字符串的删除操作
void Delete_str(SqString &s, int i, int length)
{
int j;
for (j = i + length - 1;j<s.curlen;j++)
s.data[j - length] = s.data[j];
s.data[j - length] = '\0';
}
//字符串的插入操作
void Insert_str(SqString &s, int i, SqString t)
{
int j;
for (j = s.curlen - 1;j >= i - 1;j--)
s.data[j + t.curlen] = s.data[j];
for (int k = 0;k<t.curlen;k++)
s.data[++j] = t.data[k];
s.data[s.curlen + t.curlen] = '\0';
}
//字符串的子串定位操作
int Index_str(SqString s, SqString t)
{
int i = 0;
int j = 0;
while (i<s.curlen&&j<t.curlen)
{
if (s.data[i] == t.data[j])
{
i++;j++;
}
else
{
i = i - j + 1;
j = 0;
}
}
if (j == t.curlen)
return i - t.curlen + 1;
else
return 0;
}
int main()
{
int flag = 1;
SqString s, s1, t;
cout << "1: 表示查找或定位\n2: 表示插入\n3: 表示删除\n4: 表示串连接\n5: 表示串比较\n6: 表示求子串\n7 表示求串长"<<endl;
cout << "请输入你要执行的操作对应的数字:" << endl;
while (flag)
{
int n;cin >> n;
switch (n)
{
case 1: //查找或定位
cout << "请输入比较的两个字符串:\n";
create_str(s);create_str(t);
int pos;
pos = Index_str(s, t);
cout << pos;break;
case 2://输入
int i;
cout << "请输入两个字符串:\n";
create_str(s);create_str(t);
cout << "请输入插入的位置:";
cin >> i;
Insert_str(s, i, t);
Print_str(s);break;
case 3://删除
int length;
cout << "请输入字符串:\n";
create_str(s);
cout << "请输入删除位置和截断长度:";
cin >> i >> length;
Delete_str(s, i, length);
Print_str(s);break;
/**/
case 4://串连接
cout << "请输入两个字符串:\n";
create_str(s);create_str(t);
Concat_str(s, t, s1);
Print_str(s1);break;
case 5:
cout << "请输入两个字符串:\n";
create_str(s);create_str(t);
int back;
back = Comp_str(s, t);
cout << back;break;
case 6://求子串
cout << "请输入字符串:\n";
create_str(s);
cout << "请输入位置和截取长度:";
cin >> i >> length;
Sub_str(t, s, i, length);
Print_str(t);break;
case 7://求串长
cout << "请输入字符串:\n";create_str(s);
length = StrLenth(s);
cout << length;break;
}
}
return 0;
}
运行结果部分截屏如下:
更多精彩内容请关注公众号:干货分享录