string 简单实现

namespace ss{
    class string {
        friend ostream& operator <<(ostream&, const string&);
        char *_str;
    public:
        string():_str(new char[1]){
            _str[0] = '\0';
        }
        string(const char* str):_str(new char[strlen(str)+1]) {
            strcpy(_str, str);
        }
        string(const string & s):_str(new char[s.size()+1]){
            strcpy(_str, s._str);
        }
        string( string&& s):_str(s._str) {
            s._str = nullptr;
        }
        //operator
        string & operator =(string s) {
            swap(s);
            return *this;
        }
        char & operator [](int i) {return _str[i];}
        /*
         string &operator =(const string &s){
         if (this != &s) {
         delete []_str;
         if(s._str!= nullptr) {
         _str = new char[strlen(s._str)+1];
         strcpy(_str, s._str);
         }
         }
         return *this;
         }*/
        //get
        size_t size() const {
            return strlen(_str);
        }
        //
        void swap(string& s) {
            std::swap(_str, s._str);
        }
    };
    ostream& operator << (ostream& os, const string &ob)
    {
        os << ob._str;
        return os;
    }

};

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-28 21:20:34

string 简单实现的相关文章

String简单实现

String类的简单实现: 1.在拷贝构造函数和赋值运算符重载这两个函数中有浅拷贝和深拷贝的问题 2.要对输入输出函数重载 3.赋值运算符重载有两种方式.注意在采用交换实现的时候函数的参数只能是临时变量 class String { friend ostream& operator<<(ostream& os, String& s); friend istream& operator>>(istream& is, String& s)

Java String简单知识点总结

1.字符串的比较 1 public void run(){ 2 //str1在池中 3 String str1 = new String("String"); 4 //str2,str3 存在于堆中 5 String str2 = "String"; 6 String str3 = "strin"+"g"; 7 8 System.out.println(str1 == str2);//false 9 10 System.out

codeforces 710E Generate a String(简单dp)

传送门:http://codeforces.com/problemset/problem/710/E 分析: 让你写一个全由"a"组成的长为n的串,告诉你两种操作,第一种:插入一个字母或者删除一个字母需要花费x秒, 第二种:复制现有的串,并加入到原来的穿上,花费y秒,问你最少花费多少时间? 用dp[i]表示需要花费的最少时间,‘ 然后对i为偶数的情况取min(dp[i-1] +x,dp[i/2]+y),当i为奇数时min(dp[i-1] + x, min(dp[i/2+1] + y +

【玩转微信公众平台之七】 PHP语法简单介绍

经过多篇的努力,我们终于成为了微信公众平台的开发者.但是别高兴的太早,就跟修真小说一样:修炼多年武破虚空,飞升到仙界后本以为成为了天仙即可跳出三界外,不在五行中.可实际到了仙界才发现,成仙只是修行的第一步......没错,成为开发者也才只是第一步,因为现在你的微信公众平台还没有任何功能,说难听点就是小白,说好听点就是白马王子,说可爱点就是小白白,说黄色点就是洗白白,说...----------------要想在微信公众平台添加功能,那就需要写代码:既然说到写代码,那么肯定是要用php(如果用AS

实战c++中的string系列--string与char*、const char *的转换(data() or c_str())

在project中,我们也有非常多时候用到string与char*之间的转换,这里有个一我们之前提到的函数 c_str(),看看这个原型: const char *c_str(); c_str()函数返回一个指向正规C字符串的指针, 内容与本string串同样. 这就看到了吧,返回值是const char*,这里须要注意一下. 1 string转const char* 当然是用到上面所述的方法c_str(): string s1 = "abcdeg"; const char *k =

java String中的intern()

1 Java会确保一个字符串常量只有一个拷贝. 例1:String s0=”kvill”;  String s1=”kvill”;  String s2=”kv” + “ill”;  System.out.println( s0==s1 );  System.out.println( s0==s2 );  结果为:  true  true  因为例子中的s0和s1中的”kvill”都是字符串常量,它们在编译期就被确定了,所以s0==s1为true:而”kv”和”ill”也都是字符 串常量,当一个

String是java中的基本数据类型吗

1. 首先String不属于8种基本数据类型,String是一个对象. 因为对象的默认值是null,所以String的默认值也是null:但它又是一种特殊的对象,有其它对象没有的一些特性. 2. Java代码 new String() 和 new String("")都是申明一个新的空字符串,是空串不是null: 3. String str="kvill": String str=new String ("kvill"); 的区别: 在这里,我们

String的相关操作总结

Java中的String与常量池 string是java中的字符串.String类是不可变的,对String类的任何改变,都是返回一个新的String类对象. string是java中的字符串.String类是不可变的,对String类的任何改变,都是返回一个新的String类对象.下面介绍java中的String与常量池. 1. 首先String不属于8种基本数据类型,String是一个对象. 因为对象的默认值是null,所以String的默认值也是null:但它又是一种特殊的对象,有其它对象

Java中的String与常量池

string是java中的字符串.String类是不可变的,对String类的任何改变,都是返回一个新的String类对象.下面介绍java中的String与常量池. 1. 首先String不属于8种基本数据类型,String是一个类类型. 因为对象的默认值是null,所以String的默认值也是null:但它又是一种特殊的对象,有其它对象没有的一些特性. 2. new String()和new String(“”)都是申明一个新的空字符串,是空串不是null: 3. String str=”k