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;Может кто сталкивался с подобной проблемой?
 
	 
	 
	 
	 
	 В принципе можно после вызова strncpy проделывать что-то вроде str[size] = 0;, но это опять же делает функцию не совсем самостоятельной. Думаю, лучше всего будет написать исправленную strncpy с добавлением этого нуля...
 В принципе можно после вызова strncpy проделывать что-то вроде str[size] = 0;, но это опять же делает функцию не совсем самостоятельной. Думаю, лучше всего будет написать исправленную strncpy с добавлением этого нуля...
 
 
		 
 
		 
 
		 
 
		 
	