DZ小明 2017-02-22 09:52 采纳率: 75%
浏览 1398
已采纳

c++中实现string类的问题

   每次在vs2013中的c++程序中实现string类时,在连接和拷贝函数时,以下用连接

举例。每次开辟好一段空间后,将this的字符串一个一个给到新空间,然后再把传的对象
的字符串一个一个连到新空间后面时,总会出现该问题图片说明
而我的代码是这样写的:

 String& operator+=(const String& s)
    {
        int length1 = strlen(_pStr);
        int length2 = strlen(s._pStr);
        char* p = s._pStr;
        char* tmp = new char[length1 + length2 + 1];
        while (*_pStr)
        {
            *tmp = *_pStr;
            tmp++, _pStr++;
        }
        _pStr = tmp;
        while (*p)
        {
            *_pStr = *p;
            _pStr++, p++;
        }
        *_pStr = '\0';
        return *this;
    }
  • 写回答

6条回答 默认 最新

  • BabysBreath_hl 2017-02-22 11:55
    关注
    String& operator+=(const String& s)
    {
        int length1 = strlen(_pStr);
        int length2 = strlen(s._pStr);
        char* p = s._pStr;
        char* tmp = new char[length1 + length2 + 1];
        memcpy(tmp, _pStr, length1 + 1);
    
        for (size_t i = 0; i <= length2; i++)
        {
            tmp[length1++] = s._pStr[i];
        }
        _pStr = tmp;
    
        return *this;
    }
    char* Get_ptr()
    {
        return _pStr;
    }
    
    
    我是这样改的 你看一下 创建空间后 应对它进行赋值
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(5条)

报告相同问题?