自定义String
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 | // ShStringNew.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include<iostream> #include<iomanip> using namespace std; class SHString { public : SHString( const char * Str = "" ) :mStr( new char [ strlen (Str) + 1]) { strcpy (mStr, Str); } SHString( const SHString& Str) :mStr( new char [ strlen (Str.mStr) + 1]) { strcpy (mStr, Str.mStr); } SHString& operator=( const char * Str) { delete [] mStr; mStr = new char [ strlen (Str) + 1]; strcpy (mStr, Str); return * this ; } SHString& operator=( const SHString& Str) { if ( this != &Str) { delete []mStr; mStr = new char [ strlen (Str.mStr) + 1]; strcpy (mStr, Str.mStr); } return * this ; } ~SHString() { delete []mStr; mStr = NULL; } public : char * mStr; friend ostream& operator<<(ostream& os, SHString& S); friend istream& operator >> (istream&, SHString& S); SHString operator+( const SHString &other); //operator+ }; //因为模拟实现的string不是内置类型,所以要重载输出运算符,才能输出String类对象的内容 ostream& operator<<(ostream& os, SHString& Str) { os << Str.mStr; return os; } istream &operator >> (istream &input, SHString &s) { char temp[255]; //用于存储输入流 input >> setw(255) >> temp; s = temp; //使用赋值运算符 return input; //使用return可以支持连续使用>>运算符 } inline SHString SHString::operator+( const SHString &other) { SHString NewString; NewString.mStr = new char [ strlen (mStr) + strlen (other.mStr) + 1]; strcpy (NewString.mStr, mStr); strcat (NewString.mStr, other.mStr); return NewString; } int main() { SHString Str1( "abcdef" ); SHString Str2( "ABCDEF" ); SHString Str3(Str1); SHString Str4,Str5,Str6; Str4 = Str1; char * v1 = "123" ; Str5 = v1; Str6 = Str4 + Str5; cout << "Str1->" << Str1 << endl; cout << "Str2->" << Str2 << endl; cout << "Str3->" << Str3 << endl; cout << "Str4->" << Str4 << endl; cout << "Str5->" << Str5 << endl; cout << "Str6->" << Str6 << endl; return 0; } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗