#include <iostream>
#include <cstdlib>
#include<cstring>
using namespace std;
//int main()
//{
// string str = "sjdvbsszbk";
// string::iterator it1 = str.begin();//前面必须具有作用域,调用必须依赖对象
// string::iterator it2 = str.end();
// for(;it1 != it2;++it1)
// {
// cout<<*it1<<" ";
// }
// cout<<endl;
// return 0;
//}
template<typename T>
class CMyString
{
public:
CMyString(T *p = T()):_str(p){}//带默认值的参数
// CMyString(T *p = NULL):_str(p){}
// CMyString(T *p):_str(p){}
int size()
{
return strlen(_str);
}
class iterator
{
public:
iterator(T *p = T()):_pcur(p){}
bool operator!=(const iterator &src)
{
return _pcur != src._pcur;
}
void operator++()
{
++_pcur;
}
//对于[],*,->要提供两种版本
T operator*()
{
return *_pcur;
}
const T operator*()const
{
return *_pcur;
}
private:
T *_pcur;
};
iterator begin()
{
return iterator(_str);//创建无名对象
}
iterator end()
{
return iterator(_str+size());
}
private:
T *_str;
friend ostream& operator<<(ostream &,const CMyString<T> &);
};
template<typename T>
ostream& operator<<(ostream &out,const CMyString<T> &src)
{
for(int i = 0;i < src.size();++i)
{
out<<src._str[i]<<" ";
}
return out;
}
int main()
{
CMyString<char> str("sjdkvalnlsd");
CMyString<char>::iterator it1 = str.begin();
CMyString<char>::iterator it2 = str.end();
for(;it1 != it2;++it1)
{
cout<<*it1<<" ";
}
cout<<endl;
return 0;
}
#include <cstdlib>
#include<cstring>
using namespace std;
//int main()
//{
// string str = "sjdvbsszbk";
// string::iterator it1 = str.begin();//前面必须具有作用域,调用必须依赖对象
// string::iterator it2 = str.end();
// for(;it1 != it2;++it1)
// {
// cout<<*it1<<" ";
// }
// cout<<endl;
// return 0;
//}
template<typename T>
class CMyString
{
public:
CMyString(T *p = T()):_str(p){}//带默认值的参数
// CMyString(T *p = NULL):_str(p){}
// CMyString(T *p):_str(p){}
int size()
{
return strlen(_str);
}
class iterator
{
public:
iterator(T *p = T()):_pcur(p){}
bool operator!=(const iterator &src)
{
return _pcur != src._pcur;
}
void operator++()
{
++_pcur;
}
//对于[],*,->要提供两种版本
T operator*()
{
return *_pcur;
}
const T operator*()const
{
return *_pcur;
}
private:
T *_pcur;
};
iterator begin()
{
return iterator(_str);//创建无名对象
}
iterator end()
{
return iterator(_str+size());
}
private:
T *_str;
friend ostream& operator<<(ostream &,const CMyString<T> &);
};
template<typename T>
ostream& operator<<(ostream &out,const CMyString<T> &src)
{
for(int i = 0;i < src.size();++i)
{
out<<src._str[i]<<" ";
}
return out;
}
int main()
{
CMyString<char> str("sjdkvalnlsd");
CMyString<char>::iterator it1 = str.begin();
CMyString<char>::iterator it2 = str.end();
for(;it1 != it2;++it1)
{
cout<<*it1<<" ";
}
cout<<endl;
return 0;
}