自己动手封装一个string类
来源:互联网 发布:nginx 增加lua模块 编辑:程序博客网 时间:2024/05/17 20:14
通常c++笔试题里会要求封装一个string类,这里面的确考查了对c++应用的能力,我这个人有个不好就是记性不怎么好,所以要靠记录下来给以后用到的时候做个参考.
#include <string.h>
class string {
char *str;
int size;
public:
string() {
size = 0;
str = NULL;
}
virtual ~string() {
empty();
}
string(const char *s) {
if (s) {
size = strlen(s)+1;
str = (char *)malloc(size);
strcpy(str, s);
} else {
size = 0;
str = NULL;
}
}
string(const string& s) {
if (s.str) {
size = strlen(s.str)+1;
str = (char *)malloc(size);
strcpy(str, s.str);
} else {
size = 0;
str = NULL;
}
}
void empty(void) {
if (str) {
size = 0;
free(str);
str = NULL;
}
}
string& operator=(const string& s) {
if (this != &s) {
empty();
if (s.str) {
size = strlen(s.str)+1;
str = (char *)malloc(size);
strcpy(str, s.str);
}
}
return *this;
}
string operator+(const string& s) const {
if (str && s.str) {
string _s;
_s.size = strlen(str) + strlen(s.str) + 1;
_s.str = (char *)malloc(size);
strcpy(_s.str, str);
strcat(_s.str, s.str);
return _s;
} else {
return str ? str : s.str;
}
}
bool operator==(const string& s) const {
if (str && s.str) {
return !strcmp(str, s.str);
} else if (!str && !s.str) {
return true;
} else {
return false;
}
}
operator char *() {
return str;
}
operator const char *() const {
return str;
}
};
- 自己动手封装一个string类
- 自己动手实现一个简单的String类
- 自己动手封装AJAX类
- 自己动手实现一个简单的string类(一)
- 自己动手实现一个简单的string类(二)
- 自己动手实现一个简单的string类(三)
- 自己动手写string类(一)
- 自己动手学string类( 二 )
- 自己动手封装VxWorks下C++基础类
- 自己动手封装一个url参数解释器( ghostWuUrlParser.js )
- 用C++封装一个String
- String类封装
- vs2013封装string类
- 自己封装String类
- 封装,static,String类
- 封装string类
- 自己动手实现一个java过滤器类
- 自己动手写一个 iOS 网络请求库——封装接口
- C# 安装程序的制作
- Apache模块详解-mod_rewrite重写模块
- 不可不懂的十句英语
- android phone参数设置
- 给年轻程序员的几句话--转自开源中国社区
- 自己动手封装一个string类
- ViewFlipper 左右滑动效果
- 我的第一个Android程序helloword及个人理解
- 使用NDK移植/编译开源库(1)准备
- 操作系统引导的那点事
- 中国小吃英文翻译
- 循环不变式
- java中 foreach 的使用
- 获取采用模板列的GridView中的隐藏列中的值