String的实现
来源:互联网 发布:淘宝客定向推广计划 编辑:程序博客网 时间:2024/06/06 11:48
临时版本,操作符还需完善
头文件
#ifndef __MY_STRING_H__#define __MY_STRING_H__#include <iostream>#include<iomanip> using namespace std;class myString{friend ostream& operator<< (ostream&,myString&);//重载<<运算符 friend istream& operator>> (istream&,myString&);//重载>>运算符 public:myString(const char* str = NULL);myString(const myString& strOther);~myString();myString operator+(const myString strOther);bool operator==(const myString &str);private:char* m_strData;};inline myString::myString(const char* str){if(!str){m_strData = NULL;return;}int len = strlen(str);m_strData = new char[len + 1];memcpy(m_strData, str, len);m_strData[len] = '\0';}inline myString::myString(const myString& strOhter){if(!strOhter.m_strData){m_strData = NULL;return;}int len = strlen(strOhter.m_strData);m_strData = new char[len + 1];memcpy(m_strData, strOhter.m_strData, len);m_strData[len] = '\0';}inline myString::~myString(){if(m_strData)delete m_strData;}inline myString myString::operator+(const myString strOther){myString strRet;if(!strOther.m_strData){strRet = *this;}else{int len1 = strlen(this->m_strData);int len2 = strlen(strOther.m_strData);strRet.m_strData = new char[len1 + len2 + 1];memcpy(strRet.m_strData, this->m_strData, len1);memcpy(strRet.m_strData+len1, strOther.m_strData, len2);strRet.m_strData[len1+len2] = '\0';}return strRet;}inline bool myString::operator==(const myString &str){if(strlen(str.m_strData) != strlen(this->m_strData)){return false;}return strcmp(str.m_strData, this->m_strData) ? false : true;}ostream& operator<<(ostream& os,myString& str) {if(str.m_strData){os << str.m_strData;}return os; } istream &operator>>( istream &input, myString &s ) { char temp[ 255 ]; //用于存储输入流 input>>setw(255)>>temp; s = temp; //使用赋值运算符 return input; //使用return可以支持连续使用>>运算符 } #endif
main
// myString.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include "myString.h"int _tmain(int argc, _TCHAR* argv[]){myString str1("def");myString str2("abc");myString str3(str2);myString str4( str1 + str2 );cout << str1 <<endl;cout << str2 <<endl;cout << str3 <<endl;cout << str4 <<endl;cout << (str1 == str2) << endl;cout << (str2== str3) << endl; system("pause");return 0;}
0 0
- string class的实现
- 简单的string实现
- string.cpp的实现
- class String 的实现
- string类的实现
- String类的实现
- String类的实现
- String类的实现
- String的实现1
- string的简单实现
- String 类的实现
- String类的实现
- string的实现
- string的部分实现
- string类的实现
- String类的实现
- String类的实现
- c++ string的实现
- Vector的特性以及和List的区别
- eaweedfs之Volume读请求重定向
- Maven pom.xml中添加指定的中央仓库
- 百度咋做长文本去重
- java 四种写文件比较
- String的实现
- 《某halcon视频 算子篇》【最后更新日期:16/03/12
- XAMPP phpmyadmin 安全配置
- iOS分组通讯录效果+侧滑菜单(MMDrawerController)
- Mysql在大型网站的应用架构演变
- eclipse使用时技巧与注意事项
- Win10系统虚拟机打开报错
- 挑7
- Mybatis/Ibatis例子(添加,修改,删除)