나는 char * 문자열을 포함하는 String 개체를 만들었습니다. 회원. 매개 변수 멤버보다 내 개체에서 구성원을 char * 변수로 복사하여 연산자 +를 오버로드하고 있습니다. 하지만 결과를 인쇄 할 때 어떤 이유로 약 16 개의 giberish 문자가 추가됩니다 (캐스팅 과부하는 100 % 유효). 나는 그것을 char * sum = 새로운 char [길이]로 좁혔다. 이것이 문제 다. 나는 strlen (sum)을 검사했고, 길이가 6 글자 인 것으로 가정 할 때 22와 같았다. 문제가 무엇인지 실마리가있는 사람이 있습니까?내 C 스타일 문자열이 매우 이상하게 작동합니다.
String String::operator+(const String& rhs)
{
int length = strlen(string) + strlen(rhs.string);
char* sum = new char[length];
for(int i=0;i<strlen(string);i++)
sum[i] = string[i];
for(int i=0;i<strlen(rhs.string);i++)
sum[strlen(string) +i] = rhs.string[i];
String s(sum);
return s;
}
편집 : 예를 들어, 그래서 내 결과에 추가 = 지금 횡설수설가 없어,하지만 난 여전히이 "1"+ "2"+ "3"지금 "1 = 2 = 3". 이것은 NULL 종결자가 잘못된 것으로 해석 된 결과입니까?
다시 편집 해주세요. 정말 마음이 편치 않았고, [길이 +1] = [길이] 대신 '\ 0'으로 설정되었습니다. 좋은 답변을 주셔서 다시 한 번 감사드립니다!
'string'을 변수 이름으로 사용하는 것은 좋지 않습니다. – Michael
교육적인 목적으로이 작업을 수행한다고 가정합니다. 아니면'std :: string'을 사용하지 않는 다른 이유가 있습니까? –
교육 목적이 옳다, 나의 친구 –