简单用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;
}
相关推荐
麦嘟学编程几秒前
开发环境搭建之JDK11+maven3.9.8+tomcat9安装
java
小坏讲微服务几秒前
使用 Spring Cloud Gateway 实现集群
java·spring boot·分布式·后端·spring cloud·中间件·gateway
wa的一声哭了1 分钟前
hf中transformers库中generate的greedy_search
android·java·javascript·pytorch·深度学习·语言模型·transformer
.格子衫.2 分钟前
Maven的下载与安装
java·maven
Override笑看人生3 分钟前
gitlab中maven私有库使用备忘
java·gitlab·maven
不知几秋7 分钟前
配置JDK和MAVEN
java·开发语言·maven
没有bug.的程序员7 分钟前
Spring Cloud Gateway 路由与过滤器机制
java·开发语言·spring boot·spring·gateway
枫叶丹422 分钟前
【Qt开发】布局管理器(五)-> QSpacerItem 控件
开发语言·数据库·c++·qt
月下倩影时23 分钟前
ROS1基础入门:从零搭建机器人通信系统(Python/C++)
c++·python·机器人
_OP_CHEN26 分钟前
C++进阶:(八)基于红黑树泛型封装实现 map 与 set 容器
开发语言·c++·stl·set·map·红黑树·泛型编程