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;
}
时间: 2024-08-08 13:44:07

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

Java String类相关知识梳理(含字符串常量池(String Pool)知识)

目录 1. String类是什么 1.1 定义 1.2 类结构 1.3 所在的包 2. String类的底层数据结构 3. 关于 intern() 方法(重点) 3.1 作用 3.2 字符串常量池(String Pool) 4. String类所用的连接符 5. String类的主要作用(简) 正文 1. String类是什么 1.1 定义 String类表示字符串.Java程序中的所有字符串都是这个String的实例,比如"abc".字符串为常数,它们的值在创建之后不能更改.因为字符

String类之endsWith方法---&gt;检测该字符串以xx为结尾

endsWith(XX)方法是java内置类String类的一个内置方法,我们直接拿来用即可了,下边是api说明:检测该字符串以xx为结尾,结果返回布尔值 public class Demo { public static void main(String[] args) { String Str="神雕侠侣.mp4"; System.out.println(Str.endsWith(".mp4")); } } true

JavaSE8基础 String indexOf 正向查找 返回字符在字符串中第一次出现时的索引值

os :windows7 x64    jdk:jdk-8u131-windows-x64    ide:Eclipse Oxygen Release (4.7.0)        code: package jizuiku.t00; public class Dome3 { public static void main(String[] args) { String str = "abc01234543210cba"; char ch = '0'; System.out.print

String类的equals是如何进行字符串比较的

先看一段代码: public static void main(String[] args) { String a = new String("abc"); String b = new String("abc"); System.out.println(a==b);//结果为false System.out.println(a.equals(b));//结果为true } ==和equals的区别是什么呢? 简单的说,“==”用于判断引用是否相等,equals()

DOS功能调用——单个字符及字符串的输入输出

DOS系统功能调用步骤:    1. AH <- 功能号    2.指定寄存器放入该功能所要求的入口参数    3.执行int 21H    4.分析出口参数 单字符输入输出 01h键盘输入            AL=输入字符    02h显示器输出            DL=输出字符    07h直接控制台输入(无回显)    AL=输入字符    08键盘输入(无回显)        AL=输入字符======================汇编例子===================

JavaSE8基础 String lastIndexOf 反向查找 返回字符在字符串中第一次出现时的索引值

os :windows7 x64    jdk:jdk-8u131-windows-x64    ide:Eclipse Oxygen Release (4.7.0)        code: package jizuiku.t00; public class Dome3 { public static void main(String[] args) { // 索引值 // 10 // 11 // 12 // 13 // 0123456789 String str = "abc01234543

[Swift]扩展String类:实现find()查找子字符串在父字符串中的位置

类似于C++中的find()函数:比较等于val的范围中第一个元素的迭代器.如果没有元素匹配,则函数最后返回. 返回值是子字符串在父字符串中的位置(下标记录), 如果没有找到,那么会返回一个特别的标记npos(-1). 返回值可以看成是一个Int型的数. 1 //String扩展 2 extension String { 3 // 截取字符串:从index到结束处 4 // - Parameter index: 开始索引 5 // - Returns: 子字符串 6 func subString

C语言的字符与字符串处理函数

字符处理有两类函数:分类与转换.分类函数的名称以is开头,转换函数的名称以to开头,一般在ctype.h头文件中声明.宽字符处理也有分类与转换函数之分,这些函数的名称以isw和tow开头,还有通用的分类与转换函数,wctrans和towctrans,这些函数都在头文件wctype.h中定义. 习惯上,C语言中的字符串是以null字符('\0')结尾的字符数组.C89增补1增加了与普通字符串函数并行的宽字符串函数,差别在于宽字符串函数所带的参数类型为wchar_t*而不是char*,宽字符串函数名

关于c++ string类

(转自百度百科) 首先,为了在我们的程序中使用string类型,我们必须包含头文件 <string>.如下: #include <string> //注意这里不是string.h string.h是C字符串头文件 1.声明一个C++字符串 声明一个字符串变量很简单: string Str; 这样我们就声明了一个字符串变量,但既然是一个类,就有构造函数和析构函数.上面的声明没有传入参数,所以就直接使用了string的默认的构造函数,这个函数所作的就是把Str初始化为一个空字符串.St