简单用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;
}
相关推荐
阿里加多1 小时前
第 4 章:Go 线程模型——GMP 深度解析
java·开发语言·后端·golang
likerhood1 小时前
java中`==`和`.equals()`区别
java·开发语言·python
小小李程序员1 小时前
Langchain4j工具调用获取不到ThreadLocal
java·后端·ai
zs宝来了2 小时前
AQS详解
java·开发语言·jvm
telllong3 小时前
Python异步编程从入门到不懵:asyncio实战踩坑7连发
开发语言·python
And_Ii3 小时前
LCR 168. 丑数
c++
CoderMeijun3 小时前
C++ 时间处理与格式化输出:从 Linux 时间函数到 Timestamp 封装
c++·printf·stringstream·时间处理·clock_gettime
wjs20244 小时前
JavaScript 条件语句
开发语言
lulu12165440785 小时前
Claude Code Harness架构技术深度解析:生产级AI Agent工程化实践
java·人工智能·python·ai编程