#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; }
时间: 2024-10-14 21:07:40