- 真可
-
这是我早期学习的代码,它是一个头文件。将所有的函数都包括在其中。
//these codes is a class that deals with the operation of string
//its function is like as this language such as BASIC, PASCAL etc.
//it should be included these programs that deal with many strings.
#include <iostream.h>
#include <string.h>
#ifndef String_HPP
#define String_HPP
class String{
private:
char *pDate;
int nLength;
public:
String();
String(char *s);
String(String &str);
~String();
void copy(char *s);
void cat(char *s);
char *string(void) const{return pDate;}
int len(void) const{return nLength;}
String& operator=(const String &s)
{copy(s.string());return *this;}
operator const char*()
{return string();}
friend String operator+(String str1,String str2);
friend String operator+(String str,char *s);
// frined String operator+(char *s,String str);
String& operator+=(String str)
{cat(str.string());return *this;}
String& operator+=(char *s)
{cat(s);return *this;}
friend int operator==(String str1,String str2)
{return strcmp(str1.string(),str2.string())?0:1;}
friend int operator==(String str,char *s)
{return strcmp(str.string(),s)?0:1;}
friend ostream& operator<<(ostream &os,String& str)
{os<<str.string();return os;}
friend istream& operator>>(istream &is,String& str)
{ // char *s;
// is>>s;
// str.copy(s);
char s[256];
is.getline(s,256);
str.copy(s);
return is;
}
};
String::String()
{
pDate=new char[1];
*pDate=" ";
nLength=0;
}
String::String(char *s)
{
int n=strlen(s);
pDate=new char[n+1];
strcpy(pDate,s);
nLength=n;
}
String::~String()
{
delete []pDate;
}
String::String(String& str)
{
int n=str.len();
pDate=new char[n+1];
strcpy(pDate,str.string());
nLength=n;
}
void String::copy(char *s)
{
int n=strlen(s);
if(nLength!=n)
{
if(pDate)
delete []pDate;
pDate=new char[n+1];
nLength=n;
}
strcpy(pDate,s);
}
void String::cat(char *s)
{
int n=strlen(s);
char *pTemp;
pTemp=new char[n+nLength+1];
if(pDate)
{
strcpy(pTemp,pDate);
delete []pDate;
}
strcat(pTemp,s);
pDate=pTemp;
nLength+=n;
}
String operator+(String str1,String str2)
{
String newString(str1);
newString.cat(str2.string());
return newString;
}
String operator+(String str,char *s)
{
String newString(str);
newString.cat(s);
return newString;
}
String operator+(char *s,String str)
{
String newString(s);
newString.cat(str.string());
return newString;
}
#endif
- 康康map
-
灌水.
#define string CString
或者
typedef CString string;
- meira
-
好狂!
这是别人帮住你耶 做人要厚道 你以为来这的人都是为了点分吗?
看不起这种人 路过