C++day1
#include <iostream>
#include <cstring>
#include <cstdlib>
#include <unistd.h>
#include <sstream>
#include <vector>
#include <memory>using namespace std;class mystring {
private:char* buf;int len;
public:// 单参构造函数,支持隐式调用,列表初始化 lenmystring(const char* str): len(strlen(str)){buf = new char[len + 1];strcpy(buf, str);}// copy 函数,从 mystring 对象拷贝void copy(const mystring& other) {len = other.len;buf = new char[len + 1];strcpy(buf, other.buf);}// copy 函数,从 C 风格字符串拷贝void copy(const char* str) {len = strlen(str); buf = new char[len + 1];strcpy(buf, str);}// append 函数,追加 mystring 对象内容void append(const mystring& other) {int newLen = len + other.len;char* newBuf = new char[newLen + 1];strcpy(newBuf, buf);strcat(newBuf, other.buf);buf = newBuf;len = newLen;}// append 函数,追加 C 风格字符串内容void append(const char* str) {int strLen = strlen(str);int newLen = len + strLen;char* newBuf = new char[newLen + 1];strcpy(newBuf, buf);strcat(newBuf, str);buf = newBuf;len = newLen;}// compare 函数,比较 mystring 对象int compare(const mystring& other) {return strcmp(buf, other.buf);}// compare 函数,比较 C 风格字符串int compare(const char* str) {return strcmp(buf, str);}// show 函数,输出字符串void show() {cout << buf << endl;}// at 函数,获取指定位置字符char at(int index) {if (index >= 0 && index < len) {return buf[index];}// 这里可根据需求处理越界,简单返回空字符或抛异常等,这里返回空字符示例return '\0';}
};int main() {mystring str = "hello";mystring ptr = "world";str.copy(ptr);str.copy("你好");str.append(ptr);str.append("你好");str.compare(ptr);str.compare("你好");str.show();cout << str.at(0) << endl;return 0;
}