c++模拟动态语言中string类的实现

      今天闲来无事,想起动态语言里string的实现,自己也想用c++模拟下,于是便有了下文,写的过程中发现命名空间竟然不支持friend友元的使用,真郁闷,看来vc对c++标准支持的是蛮垃圾的。

#include<iostream.h>
#include<string.h>
#include<stdlib.h>
//using namespace std;
class v_string{
public:
 v_string();
 v_string(char*);
 v_string(int);
 v_string(const v_string&);
 ~v_string();
v_string operator +(char *);
 v_string operator+(int);
 void operator =(char*);
 void operator =(int);
 void operator =(v_string&);
 friend ostream& operator <<(ostream& os,const v_string& v);
 int getint();
private:
 char *str;
 int len;
 
};
ostream& operator <<(ostream &os,const v_string& v){
 os<<v.str;
 return os;
}
v_string::v_string(){
 str=new char;
 *str=0;
 len=0;
}
v_string::v_string(char* s){
 int a=strlen(s);
 str=new char[a+1];
 strcpy(str,s);
 len=a;
}
v_string::v_string(int s){
 char t[100]={0};
 itoa(s,t,10);
 int a=strlen(t);
 str=new char[a+1];
 strcpy(str,t);
 len=a;
}
v_string::v_string(const v_string& v){
len=v.len;
str=new char[len+1];
strcpy(str,v.str);
}
v_string::~v_string(){
 delete []str;
 len=0;
}
v_string  v_string::operator +(char *s){
 int a=strlen(s);
v_string v;
v.str=new char[len+a+1];
v.len=len+a+1;
  strcpy(v.str,str);
 strcat(v.str,s);
 return v;
}
v_string v_string::operator +(int s){
 char t1[100]={0};
 itoa(s,t1,10);
 int a=strlen(t1);

 v_string v;
 v.len=len+a+1;
  strcpy(v.str,str);
 strcat(v.str,t1);
 return v;
}
void v_string::operator =(char *s){
 delete []str;
 len=strlen(s);
 str=new char[len+1];
 strcpy(str,s);
 
}
void v_string::operator =(v_string& v){
 len=v.len;
 delete []str;
 len=strlen(v.str);
 str=new char[len+1];
 strcpy(str,v.str);
 
}
int v_string::getint(){
 return atoi(str);
}

给出个使用实例:

main(){
v_string a,a1,a2;
a=a1+"34fgd";
a2=a+3453;
cout<<a<<endl<<a.getint()<<endl<<a2;
}

       只写了部分功能,还有许多有待改善,写的不好,还望大家多多指教。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值