不用substring(),写自己的方法,c语言

pSrc是一个字符串对象
startIdx + length <= pSrc->length
要求:
没有发生内存泄漏
创造一个新的字符串对象持有指定的
pSrc的子串
*

  • 返回值
  • 指向一个持有指定子串的副本对象的指针。
  • 如果失败则为NULL。

String* String_subString( const String* const pSrc, uint32_t start, uint32_t length);

因为C我也不是很熟悉,查了下貌似C中没有string这个结构



#include <stdio.h>
#include <string>
using namespace std;


string* sub_string(const string* pSrc, uint32_t start, uint32_t length)
{
    do 
    {
        if (pSrc == NULL) {
            break;
        }
        if (start + length >= pSrc->length()){
            break;
        }
        string* result = (string*)malloc(sizeof(string));
        memset(result, 0, sizeof(string));
        *result = string();
        result->append(pSrc->c_str() + start, length);
        return result;
    } while (false);
   
    return NULL;
}

int main()
{
    std::string source = "danianifdnfaidfniandifafnda";
    string* subString = sub_string(&source, 3, 10);
    if (subString){
        printf("%s", subString->c_str());
    }
    free(subString);
    
    return 0;
}