c++ String实现 基于Vector

学习这个,了解到的东西就是

一个函数的返回值如果是对象引用,那么这个返回值绝不能是一个局部变量;如果函数返回值是一个对象,那么返回值就是对象的副本了。

#ifndef _str_H
#define _str_h

#include"vec.h"

#include<cstring>
#include<cctype>
#include<algorithm>
#include<iterator>

class Str{
	Vec<char> data;
friend std::istream& operator>>(std::istream&,Str&);
public:
	typedef Vec<char>::size_type size_type;
	Str() {	}
	Str(size_type n,char c):data(n,c) { }
	Str(const char* s) {std::copy(s,s+std::strlen(s),std::back_inserter(data));	}
	template <class In> Str(In a,In b){ std::copy(a,b,std::back_inserter(data)); }
	size_type size()const {return data.size();}
	char& operator[](size_type i) {return data[i];}
	const char& operator[](size_type i)const {return data[i];}
	Str& operator+=(const Str& s){
		std::copy(s.data.begin(),s.data.end(),std::back_inserter(data));
		return *this;
	}
};



s
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值