?? string.cpp
字號(hào):
//String.cpp
#include "String.h"
/*
*前置條件:串不存在
*輸 入:無
*功 能:構(gòu)建一個(gè)串
*輸 出:無
*后置條件:構(gòu)建一個(gè)串
*/
template <class T>
String<T>:: String( )
{
data[0]="0";
length=0;
}
/*
*前置條件:串不存在
*輸 入:串信息的數(shù)組形式a[],串長度n
*功 能:將數(shù)組a[]中元素建為長度為n的串
*輸 出:無
*后置條件:構(gòu)建一個(gè)串
*/
template <class T>
String<T>:: String(T a[], int n)
{
if (n>MaxSize) throw "參數(shù)非法";
for (int i=0; i<n; i++)
data[i+1]=a[i];
data[0]=n;
length=n;
}
/*
*前置條件:無
*輸 入:無
*功 能:無
*輸 出:無
*后置條件:無
*/
template <class T>
String<T>:: ~String( )
{
}
/*
*前置條件:順序表存在
*輸 入:無
*功 能:輸出順序表長度
*輸 出:順序表長度
*后置條件:順序表不變
*/
template <class T>
int String<T>::Length()
{
return length;
}
/*
*前置條件:串存在
*輸 入:串x,位置i
*功 能:將串x插入到串S 的第i個(gè)位置上
*輸 出:無
*后置條件:串x不變
*/
template <class T>
void String<T>::StrInsert(int i, String x)
{
int j;
if (length>=MaxSize) throw "上溢";
if (i<1 || i>length+1) throw "位置";
for (int k=x.length;k>0;k--)
{
for (j=length; j>=i; j--)
data[j+1]=data[j];
data[i]=x.data[k];
length++;
data[0]=data[0]+1;
}
}
/*
*前置條件:串存在
*輸 入:位置i,長度len
*功 能:刪除串S中從第i個(gè)字符開始連續(xù)len個(gè)字符
*輸 出:無
*后置條件:串刪除元素
*/
template <class T>
void String<T>::StrDelete(int i,int len)
{
int j,k;
if (len==0) throw "下溢";
if (i<1 || i>length) throw "位置";
for (k=len; k>0; k--)
{
for (j=i; j<length; j++)
data[j]=data[j+1];
length--;
data[0]=data[0]-1;
}
}
/*
*前置條件:無
*輸 入: 串T
*功 能:串連接,將串T放在串S的后面連接成一個(gè)新串S
*輸 出:無
*后置條件:串T不變
*/
template <class T>
void String<T>::StrConcat(String T)
{
int k,j;
for (k=1; k<=T.length; k++)
{
data[length+k]=T.data[k];
length++;
data[0]=data[0]-1;
}
}
/*
*前置條件:無
*輸 入: 串T
*功 能:將T的串值賦值給串S
*輸 出:無
*后置條件:串T不變
*/
template <class T>
void String<T>::StrAssign(String T)
{
int k,j;
for (k=1; k<T.length; k++)
data[k]=T.data[k];
length=T.length;
data[0]=T.data[0];
}
/*
*前置條件:串存在
*輸 入:無
*功 能:串遍歷輸出
*輸 出:輸出所有元素
*后置條件:串不變
*/
template <class T>
void String<T>::PrintList()
{
for(int i=1;i<=length;i++)
cout<<data[i];
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -