C++String类String插入单个字符,插入字符串的函数实现
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++String类String插入单个字符,插入字符串的函数实现相关的知识,希望对你有一定的参考价值。
#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; }
以上是关于C++String类String插入单个字符,插入字符串的函数实现的主要内容,如果未能解决你的问题,请参考以下文章
C++String类String删除单个字符,删除字符串的函数实现
C++String类String查找单个字符,查找字符串的函数实现