다른 사용하여 포인터를 하나 개의 char 배열을 추가 origText = "ABC", 붙여 넣기 = "DEF" 기능 후 : origText = "ABCDEF" , paste = "def"제대로 작동 나는이 같은 기능이
그래서 두 문자열을 하나로 병합했습니다. 이 기능을 사용할 때 : 함수 외부
char* add (char* origText,char *paste)
{
int newLength = strlen(origText) + strlen(paste)+ 1; // + '\0'
char* newText = new char[newLength]; // we want to make sure that 2 strings will fit.
char* pointerToNewText = newText; // pointer to char array where we will merge strings
char* helpPointer = origText; // helps us count until '\0'
while (*helpPointer!='\0')
{
*pointerToNewText=*helpPointer;
*pointerToNewText++; *helpPointer++;
}
while (*paste!='\0')
{
*pointerToNewText=*paste;
*pointerToNewText++; *paste++;
}
*pointerToNewText='\0';
origText = newText;
// cout <<origText<<endl;
}
출력은 다음과 같습니다 origText = "ABC", 붙여 넣기 = "DEF" 기능 후 : origText는 = "ABC", 붙여 넣기 = "데프"
I 내 책은 그것이이 줄 때문이라고 설명했습니다 :
char* newText = new char[newLength];
그러나 나는 그것을 얻지 못합니다. 함수에서 메모리 할당이 포인터 origText에 영향을주는 이유는 무엇입니까?
원본 메모리에 충분한 메모리가 있으면 좋겠어. 그렇지 않으면 메모리가 손상됩니다. – xanatos
'std :: string'을 사용하십시오. 전체 함수 정의는이를 사용하여 한 줄로 작성 될 수 있습니다. 당신의 책이 당신이 쓴 방법을 추천한다면, 또 다른 좋은 책을 골라야합니다. – Mahesh
@Mahesh +1이 책은 너무 많은 수준에서 틀린 것처럼 보입니다. – stijn