zoukankan
html css js c++ java
模仿写的cstring类,操作符没有完全重载(=,)
//
String.cpp : 定义控制台应用程序的入口点。
//
#include
"
stdafx.h
"
template
<
typename Ty
>
class
CMyString
{
public
:
typedef unsigned size_t;
typedef Ty valuetype;
enum
{
MAX_LENGHT
=
1000
}
;
private
:
size_t m_uCout;
Ty m_Buf[MAX_LENGHT];
public
:
CMyString();
~
CMyString();
CMyString(
const
Ty
*
str);
CMyString(
const
CMyString
<
Ty
>&
other);
CMyString
&
operator
=
(
const
CMyString
<
Ty
>&
other);
CMyString
&
operator
+=
(
const
CMyString
<
Ty
>&
other);
CMyString
operator
+
(
const
CMyString
<
Ty
>&
other);
CMyString
&
operator
-=
(
const
CMyString
<
Ty
>&
other);
CMyString
operator
-
(
const
CMyString
<
Ty
>&
other);
public
:
size_t size()
{
return
m_uCout;
}
const
Ty
*
c_str()
const
{
return
m_Buf;
}
private
:
size_t mylen(
const
Ty
*
str)
{
if
(NULL
==
str)
return
0
;
size_t size
=
0
;
while
(
*
(str
+
size)
!=
0
)
{
++
size;
}
return
size;
}
void
mycpy(Ty
*
des,size_t size,
const
Ty
*
res)
{
size_t tmp
=
0
;
while
(tmp
<=
size
&&
*
(res
+
tmp)
!=
0
)
{
*
(des
+
tmp)
=
*
(res
+
tmp);
tmp
++
;
}
*
(des
+
tmp)
=
0
;
}
void
mycat(Ty
*
des,size_t size,
const
Ty
*
res)
{
size_t i
=
0
;
while
(
*
(des
+
i)
!=
0
)
{
i
++
;
}
size_t j
=
0
;
while
(
*
(res
+
j)
!=
0
)
{
*
(des
+
i
+
j)
=
*
(res
+
j);
j
++
;
}
*
(des
+
i
+
j)
=
0
;
}
}
;
//
默认构造函数
template
<
typename Ty
>
CMyString
<
Ty
>
::CMyString()
{
*
m_Buf
=
0
;
m_uCout
=
0
;
}
//
析构函数
template
<
typename Ty
>
CMyString
<
Ty
>
::
~
CMyString()
{
}
//
a("a")
template
<
typename Ty
>
CMyString
<
Ty
>
::CMyString(
const
Ty
*
other)
{
if
(other
==
NULL)
{
*
m_Buf
=
0
;
m_uCout
=
0
;
}
else
{
m_uCout
=
mylen(other);
mycpy(m_Buf,m_uCout,other);
}
}
//
a(b)
template
<
typename Ty
>
CMyString
<
Ty
>
::CMyString(
const
CMyString
<
Ty
>&
other):m_uCout(other.m_uCout)
{
mycpy(m_Buf,m_uCout,other.m_Buf);
}
//
c=b
template
<
typename Ty
>
CMyString
<
Ty
>&
CMyString
<
Ty
>
::
operator
=
(
const
CMyString
<
Ty
>&
other)
{
m_uCout
=
other.m_uCout;
mycpy(m_Buf,m_uCout,other.m_Buf);
return
*
this
;
}
//
c+=b
template
<
typename Ty
>
CMyString
<
Ty
>&
CMyString
<
Ty
>
::
operator
+=
(
const
CMyString
<
Ty
>
&
other)
{
m_uCout
+=
other.m_uCout;
mycat(m_Buf,other.m_uCout,other.m_Buf);
return
*
this
;
}
typedef CMyString
<
char
>
cstring;
int
_tmain(
int
argc, _TCHAR
*
argv[])
{
cstring a(
"
aaa
"
);
cstring b(a);
cstring c
=
b;
c
=
"
ccc
"
;
c.c_str();
cstring d
=
"
ddd
"
;
d
+=
c;
d
+=
"
abcde111
"
;
return
0
;
}
大部分转载 小部分自写
查看全文
相关阅读:
hdu_2224_The shortest path(dp)
hdu_4824_Disk Schedule(dp)
hdu_5680_zxa and set(想法题)
hdu_5683_zxa and xor(非正解的暴力)
hdu_1429_胜利大逃亡(续)(BFS状压)
hdu_1254_推箱子(双BFS)
hdu_1969_pie(二分)
hdu_2446_Shell Pyramid(数学,二分)
hdu_2141_Can you find it?(二分)
5.2 nc + JMX查看分布式程序数据
原文地址:https://www.cnblogs.com/8586/p/1493762.html
最新文章
程序为什么开头总是PUSH EBP
session的属性设置
关于PreparedStatement.addBatch()方法
JAVA&&JAVA WEB开发包U盘封装版
WMIC
获取批处理文件所在路径
jsp操作mysql样例
JAVA中CLASS.FORNAME的含义
深入浅出Node.js (5)
洛谷 P2392 kkksc03考前临时抱佛脚
热门文章
洛谷 P1106 删数问题
洛谷 P1256 显示图像
洛谷 P1226 取余运算||快速幂
洛谷 P1105 平台
洛谷 P2242 公路维修问题
洛谷 P1086 花生采摘
洛谷 P2437 蜜蜂路线
洛谷 P1255 数楼梯
洛谷 P1163 银行贷款
hdu_4828_Grids(卡特兰数+逆元)
Copyright © 2011-2022 走看看