简单用c++的类实现的string

cpp 复制代码
#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;
}
cpp 复制代码
#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") ;//以写的形式打开1.txt文件
    string str = "hello";
    file.write(str) ;//将 str 里面的内容,即"hello" 写入文件 1.txt 中
    string ptr = file.read(50) ;//从 1.txt 中读取最多 50个字节的数据,并且写入ptr中
    
    return 0;
}
相关推荐
木井巳几秒前
【多线程】常见的锁策略及 synchronized 的原理
java·开发语言
代码改善世界2 分钟前
【C++初阶】类和对象(二):默认成员函数详解与日期类完整实现
开发语言·c++
专注VB编程开发20年3 分钟前
VS2026调试TS用的解析/运行引擎:确实是 ChakraCore.dll(微软自研 JS 引擎)
开发语言·javascript·microsoft
郝学胜-神的一滴6 分钟前
深入理解Python生成器:从基础到斐波那契实战
开发语言·前端·python·程序人生
南梦浅11 分钟前
网站redis从开发到部署方案
java·jvm·redis
问水っ11 分钟前
Qt Creator快速入门 第三版 第6章 事件系统
开发语言·qt
cm65432011 分钟前
C++中的空对象模式
开发语言·c++·算法
吴声子夜歌12 分钟前
JavaScript——异常处理
开发语言·javascript·ecmascript
2401_8512729912 分钟前
C++代码规范化工具
开发语言·c++·算法
阿kun要赚马内13 分钟前
操作系统:线程与进程
java·开发语言·jvm