简单用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;
}
相关推荐
小新1103 分钟前
qt creator 将qInfo的输出日志写入日志文档,方便查看
开发语言·qt
我材不敲代码37 分钟前
Python 函数核心:位置参数与关键字参数详解
java·前端·python
hssfscv41 分钟前
QT的学习记录1
开发语言·qt·学习
SunnyDays10111 小时前
Python操作Excel批注:从基础添加到高级自定义的完整指南
开发语言·python·excel
Yyyyyy~1 小时前
【C++】数组篇
开发语言·c++
qq_333120971 小时前
C++高并发内存池的整体设计和实现思路_C 语言
java·c语言·c++
牛肉在哪里1 小时前
ros2 从零开始27 编写广播C++
开发语言·c++·机器人
mh_f1 小时前
33.批量通过GET链接下载图片到指定文件夹下
java
金銀銅鐵1 小时前
[Java] 如何理解 class 文件中方法的 access flags?
java·后端
智研数智工坊1 小时前
SpringBoot4.0.6 + Security7.x + JWT 最新完整实战|无状态权限认证、统一异常处理、可直接落地
java·spring boot·spring security·jwt·权限认证