문자열의 버퍼를 얼마나 할당할지 어떻게 알죠?
글쓴이: kuaaan / 작성시간: 월, 2005/11/07 - 9:54오후
스트링 중 원하는 부분을 replace하는 함수를 짜려고 합니다.
버퍼를 할당하여 거기에 저장해서 리턴하려고 하는데...
도대체 버퍼 사이즈를 어떻게 정하죠?
char* replaceStr(char* strSrc,const char* strFrom, const char* strTo, int sizeofStrSrc = 5000 ) { char* strBuf = new char[sizeofStrSrc]; // -->> 이부분!! char* curFrom = strSrc; char* curTo = strSrc; bzero(strBuf, sizeofStr); if(curTo = strstr(curFrom, strFrom)) { while(curTo) { strncat(strBuf, curFrom, curTo - curFrom); strncat(strBuf, strTo, strlen(strTo)); curFrom = curTo + strlen(strFrom); curTo = strstr(curFrom, strFrom); } strncat(strBuf, curFrom, sizeofStr); } else { strncpy(strBuf, strSrc, sizeofStr); } return strBuf; }
처음부분에...
char* strBuf = new char[sizeofStrSrc]; // -->> 이부분!!
여기서.. strBuf의 사이즈를 어떻게 할당해야 하나요?
(지금 sizeofStr이라고 된 부분...)
고수님들의 조언 부탁드립니다... 꾸벅...
Forums:
처음부터 버퍼 크기를 알 수는 없죠. 바꾸려는 문자열이 발견될 때마다 치
처음부터 버퍼 크기를 알 수는 없죠. 바꾸려는 문자열이 발견될 때마다 치환 후의
길이를 계산해서 현재 할당된 메모리가 치환 후의 길이보다 작으면 realloc()으로
늘려나가는 방식이 있겠는데, 실제로 코딩하려면 좀 귀찮습니다. char* 보다
std::string을 쓰면 무척 간편하게 할 수 있습니다.
감사합니다. 꾸벅...
감사합니다. 꾸벅...
----------------------------------------------
한번뿐인 인생....
미친듯이 살아보자!
----------------------------------------------
댓글 달기