自定义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,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发中对象命名的一点思考
· .NET Core内存结构体系(Windows环境)底层原理浅谈
· C# 深度学习:对抗生成网络(GAN)训练头像生成模型
· .NET 适配 HarmonyOS 进展
· .NET 进程 stackoverflow异常后,还可以接收 TCP 连接请求吗?
· 本地部署 DeepSeek:小白也能轻松搞定!
· 如何给本地部署的DeepSeek投喂数据,让他更懂你
· 在缓慢中沉淀,在挑战中重生!2024个人总结!
· 大人,时代变了! 赶快把自有业务的本地AI“模型”训练起来!
· 从 Windows Forms 到微服务的经验教训