题目:
引入CString.h头文件,它的内容如下: #include <iostream> using namespace std; class String{ private: char *mystr; //字符串 int len; //字符串长度 public: String(){ len =0; mystr =NULL; } String(const char* p){ len = strlen(p); mystr = new char[len+1]; strcpy(mystr,p); } String(String &s){ len = s.len; if (len !=0) { mystr = new char[len+1]; strcpy(mystr,s.mystr); } } ~String(){ if (mystr != NULL) { delete []mystr; mystr =NULL; len = 0; } } char *GetStr(){return mystr;} void ShowStr(){cout<<mystr;} bool IsSubstring(const char *str); bool IsSubstring(const String &str); int str2num(); void toUppercase(); }; 实现String类的成员方法: bool IsSubstring(const char *str) 判定字符串str是否为当前String对象的子串,是则返回true,否则返回false。 bool IsSubstring(const String &str) 判断String对象str是否为当前String对象的子串,是则返回true,否则返回false。 int str2num() 将当前String对象转化为数字,转换时忽略出数字以外的字符, 不考虑溢出的情况,如当前字符串为1t2e3s4y5,执行str2num 返回12345。 void toUppercase()将String的字符串的字母全部转化为大写字母。
代码:
#include <iostream>
#include <cstring>
using namespace std;
class String{
private:
char *mystr; //字符串
int len; //字符串长度
public:
String(){
len =0;
mystr =NULL;
}
String(const char* p){
len = (int)strlen(p);
mystr = new char[len+1];
strcpy(mystr,p);
}
String(String &s){
len = s.len;
if (len !=0)
{
mystr = new char[len+1];
strcpy(mystr,s.mystr);
}
}
~String(){
if (mystr != NULL)
{
delete []mystr;
mystr =NULL;
len = 0;
}
}
char *GetStr(){return mystr;}
void ShowStr(){cout<<mystr;}
bool IsSubstring(const char *str);
bool IsSubstring(const String &str);
int str2num();
void toUppercase();
};
void String::toUppercase(){
int i=0;
for(i=0;i<len;i++){
if(mystr[i]>='a'&&mystr[i]<='z'){
mystr[i]-=32;
}
}
}
bool String::IsSubstring(const char *str){
bool flag=false;
int i=0,j=0;
while(mystr[i]){
if(str[j]=='\0'){
flag=true;
break;
}
if(mystr[i]==str[j]){
i++;
j++;
}
else{
i++;
j=0;
}
}
if(mystr[i]=='\0'&&str[j]=='\0'){
return true;
}
return flag;
}
bool String::IsSubstring(const String &str){
return IsSubstring(str.mystr);
}
int String::str2num(){
int a[100],result=0;
int i=0,j=0,k=0;
for(i=0;i<len;i++){
if(mystr[i]>='0'&&mystr[i]<='9'){
a[j++]=mystr[i]-48;
}
}
for(i=j-1;i>=0;i--){
for(k=0;k<j-i-1;k++){
a[i]*=10;
}
result+=a[i];
}
return result;
}