一,自定义String
#include <iostream>
#include <string.h>
using namespace std;
class String{
private:
char *m_data;
public:
String();
String(const char *);
String(const String &);
~String();
String & operator=(const String &);
char & operator[](int);
const char & operator[](int);
friend ostream & operator << (ostream &, const String &);
friend istream & operator >> (istream &, const String &);
friend const String operator+(const String &, const String &);
};
String::String(){
m_data = new char[1];
if(m_data != NULL){
*m_data = '\0';
} else {
}
}
String::String(const char *str){
if(str == NULL){
m_data = new char[1];
if(m_data != NULL){
*m_data = '\0';
} else {
}
} else {
int length = strlen(str);
m_data = new char[length + 1];
if(m_data != NULL){
strcpy(m_data, str);
} else {
}
}
}
String::String(const String &str){
int length = strlen(str.m_data);
m_data = new char[length + 1];
if(m_data != NULL){
strcpy(m_data, str.m_data);
} else {
}
}
String::~String(){
delete [] m_data;
}
String & String::operator=(const String &str){
if(this != &str){
String temp(str);
char *p = temp.m_data;
temp.m_data = m_data;
m_data = p;
}
return *this;
}
char & String::operator[](int index){
return m_data[index];
}
const char & String::operator[](int index) const{
return m_data[index];
}
ostream & operator << (ostream &os, const String &st){
os<<st.str;
return os;
}
istream & operator >> (istream &is, const String &st){
is>>st.str;
return is;
}
const String operator+(const String &str1, const String &str2){
int length1 = strlen(str1.m_data);
int length2 = strlen(str2.m_data);
String str;
str.m_data = new char[length1 + length2 + 1];
if(str.m_data != NULL){
strcpy(str.m_data, strcat(str1.m_data, str2.m_data));
} else {
}
return str;
}
int main(){
return 0;
}