数据结构字符串的操作2
发布网友
发布时间:2023-11-23 04:15
我来回答
共2个回答
热心网友
时间:2024-11-26 08:45
#include<iostream>using namespace std;#define MAXSIZE 20typedef char String[MAXSIZE + 1]; //以'\0'结尾/* 生成一个串*/bool StrAssign(String Dest, char *ptr)
{ cout << "Assign Str ..." << endl; int i; for (i = 0; ptr[i] != '\0' && i < MAXSIZE; i++)
Dest[i] = ptr[i];
Dest[i] = '\0'; return true;
}/* 拷贝一个字符串 */bool StrCopy(String Dest, String Src)
{ cout << "Copy Str ..." << endl; int i; for (i = 0; Src[i] != '\0' && i < MAXSIZE; i++)
Dest[i] = Src[i];
Dest[i] = '\0'; return true;
}int StrLength(String Src)
{ int i = 0; while (Src[i] != '\0')
i++; return i;
}bool StrEmpty(String Src)
{ if (StrLength(Src) == 0) return true; else
return false;
}/* 若Str1>Str2,则返回值>0;若Str1=Str2,则返回值=0;若Str1<Str2,则返回值<0 */int StrCompare(String Str1, String Str2)
{ int len1 = StrLength(Str1); int len2 = StrLength(Str2); for (int i = 0; i < len1 && i < len2; i++) if (Str1[i] != Str2[i]) return Str1[i] - Str2[i]; return len1 - len2;
}bool ClearString(String Src)
{ for (int i = 0; Src[i] != '\0'; i++)
Src[i] = '\0'; return true;
}/* 用Dest返回Str1和Str2联接而成的新串。若未截断,则返回TRUE,否则FALSE */bool StrConcate(String Dest, String Str1, String Str2)
{ cout << "Concate String ..." << endl; if (StrLength(Str1) + StrLength(Str2) <= MAXSIZE)
{ /* 未截断 */
int i, j; for (i = 0; Str1[i] != '\0'; i++)
Dest[i] = Str1[i];
j = i; for (i = 0; Str2[i] != '\0'; i++, j++)
Dest[j] = Str2[i];
Dest[j] = '\0'; return true;
} else //截断Str2
{ int i, j; for (i = 0; Str1[i] != '\0'; i++)
Dest[i] = Str1[i];
j = i; for (i = 0; Str2[i] != '\0' && j <= MAXSIZE - 1; i++, j++)
Dest[j] = Str2[i];
Dest[j] = '\0'; return false;
}
}/* 用Sub返回串Src的第pos个字符起长度为len的子串。 */bool SubString(String Sub, String Src, int pos, int len)
{ /*cout<<"Get SubString ..."<<endl;*/
if (pos < 1 || pos > StrLength(Src) ||
len < 0 || len > StrLength(Src) - pos + 1) return false; int i; for (i = 0; i <= len - 1; i++)
Sub[i] = Src[i + pos - 1];
Sub[i] = '\0'; return true;
}/* 返回子串Sub在主串Src中第pos个字符之后的位置。若不存在,则函数返回值为0。 */int Index1(String Src, String Sub, int pos)
{ int len1 = StrLength(Src); int len2 = StrLength(Sub); int i = pos;
String sub; if (pos > 0)
{ while (i <= len1 - len2 + 1)
{
SubString(sub, Src, i, len2); /* 如果两串相等 , 则返回i值 */
if (StrCompare(Sub, sub) == 0) return i; else/* 如果两串不相等,前进位置 */
i++;
}
} return 0;
}
热心网友
时间:2024-11-26 08:46
创建数组 保存数据 我就不写了哈
(2)将字符串Srting2的头n个字符添加到String1的尾部。输出结
string1.Insert(string.Length - 1, string2.Substring(0, n))
(3)查找串String3在串String1中的位置,若String3在String1中不存在。则插入String3在String1中的m位置上。输出结果。
if(string1.Contains(string3))
{
string1.IndexOf(string3);
}
else
{
string1.insert(m,string3);
}