S
shisik
У меня возникла необходимость выделить часть произвольной строки, скажем, с 5 символа и длиной 7 символов (например). Стандартную такую функцию я не нашел (может, плохо искал). Решил написать свою - благо, сложного в ней вроде ничего нет. В итоге получился следующий код:
Функция работает, нармально выделяет подстроку из строки. Проблема заключается в следующем: я не уверен, что временный массив корректно удаляется и не присходит "утечки памяти". Я имею ввиду строку char * c_TmpStr = new char[size + 1]; Удалять её в самой функции я не могу, т.к. мне надо вернуть результат. Есть вариант удалять строку после вызова функции:
Но этот способ не совсем удобен, т.к. функция должна быть полностью автономной.
Может кто сталкивался с подобной проблемой?
Код:
typedef char *PCHAR;
PCHAR substr(const char *src, int from, int size)
{
char * c_TmpStr = new char[size + 1];
int j = 0;
for (int i = from; i < from + size; i++)
c_TmpStr[j++] = src[i];
c_TmpStr[size] = 0;
return c_TmpStr;
}
Код:
char * tmp = substr("some string", 3, 5);
//работа с полученной строкой
delete [] tmp;
Может кто сталкивался с подобной проблемой?