您的位置:首页 > 编程语言 > C语言/C++

C++【String类】String插入单个字符,插入字符串的函数实现

2016-05-30 17:16 741 查看
#include<iostream>
#include<stdlib.h>
#include<assert.h>
using namespace std;

class String
{
public:
String(const char* str)
:_str(new char[strlen(str) + 1])
{
_size = strlen(str);
_capacity = _size + 1;
strcpy(_str, str);
}

String(const String& s)
:_str(NULL)
{
String tmp(s._str);
swap(_str, tmp._str);
}

~String()
{
if (_str)
{
delete[] _str;
_size =0;
_capacity =0;
_str = NULL;
}
}

//插入单个字符
void Insert(char ch, size_t pos)
{
assert(pos <= _size);
CheckCapacility();
size_t begin = _size;
while (begin >= pos)
{
_str[begin + 1] = _str[begin];
begin--;
}
_str[pos] = ch;
++_size;
}

//插入字符串
/*void Insert(size_t pos, const char* s1)
{
assert(pos <= _size);

int len = strlen(s1);
CheckCapacility(_size+len+1);
size_t begin = _size;
while (begin >= pos)
{
_str[begin + len] = _str[begin];
--begin;
}
for (int i = 0; i < len;i++)
{
_str[pos++] = s1[i];
}
}

char* Cstr()
{
return _str;
}

private:
void CheckCapacility(int Needlen)
{

if (Needlen >= _capacity)
{
_capacity = Needlen > 2 * _capacity ? Needlen : 2 * _capacity;
_str = (char*)realloc(_str, _capacity);
}
}
private:
char* _str;
int _size;
int _capacity;

};

void Test()
{
String s("helorld,hello bit!");
s.Insert(3,"lo w");
cout << s.Cstr() << endl;
}

int main()
{
Test();
system("pause");
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: