#include <iostream>
#include <string.h>
#include <string>
using namespace std;
class mystring
{
private:
char* _str;
unsigned int length;
public:
mystring(const char * str);
mystring(string&);
void show();
void copy(const char * str);
void copy(mystring&);
void copy(string&);
void append(const char * str);
void append(mystring&);
void append(string&);
bool compare(const char * str);
bool compare(mystring&);
bool compare(string&);
~mystring();
};
mystring::mystring(const char * str)
{
this->length = strlen(str);
this->_str = (char*) malloc(length);
memcpy(this->_str,str,this->length);
}
mystring::mystring(string& str)
{
mystring(str.data());
}
mystring::~mystring()
{
cout<<"析构被调用"<<endl;
free(this->_str);
}
void mystring::copy(const char* str){
free(this->_str);
this->_str = 0;
this->length =0;
if (str == 0)
{
return;
}
this->length = strlen(str);
this->_str = (char*) malloc(this->length);
memcpy(this->_str,str,this->length);
}
void mystring::copy(mystring &str){
this->copy(str._str);
}
void mystring::copy(string& str){
this->copy(str.data());
}
void mystring::append(const char * str){
unsigned int otherstrLen = strlen(str);
char* newstr = (char* ) malloc(this->length+otherstrLen);
memcpy(newstr,this->_str,this->length);
memcpy(newstr+this->length,str,otherstrLen);
free(this->_str);
this->_str=newstr;
}
void mystring::append(mystring& str){
this->append(str._str);
}
void mystring::append(string& str){
this->append(str.data());
}
bool mystring::compare(const char* str){
if (strcmp(str,this->_str))
{
return 0;
}
return 1;
}
bool mystring::compare(mystring& str){
return this->compare(str._str);
}
bool mystring::compare(string& str){
return this->compare(str.data());
}
void mystring::show(){
cout<<this->_str<<endl;
}
int main(int argc, char const *argv[])
{
mystring str = "hello";
mystring ptr = "world";
str.show(); ;
str.copy("world");
str.copy(ptr);
str.append("world");
str.append(ptr);
str.compare("world");
str.compare(ptr) ;
return 0;
}
#include <iostream>
#include <cstdio>
#include <string.h>
using std::string;
using std::cout;
class File
{
private:
FILE * file;
public:
File(const char * filename,const char * mode);
~File();
int write(string&);
string read(unsigned int);
};
File::File(const char * filename,const char * mode)
{
this->file=fopen(filename,mode);
}
File::~File()
{
fclose(this->file);
}
int File::write(string& cont){
return fwrite(cont.data(),cont.length(),1,file);
}
string File::read (unsigned int length){
char * buf = (char*) malloc (length);
fread(buf,length,1,file);
string ret = buf;
free (buf);
return ret;
}
int main(int argc, char const *argv[])
{
File file("1.txt","w") ;
string str = "hello";
file.write(str) ;
string ptr = file.read(50) ;
return 0;
}
