내 프로그램의 마지막 부분에 도움이 필요합니다. 더 큰 문자열 내에서 문자열을 찾고, 발견 된 경우 부분 문자열의 시작 위치를 반환해야합니다. 방향에서 :큰 문자열에서 문자열 검색
문자열 위치는 0에서 시작하여 길이가 -1입니다. 문자열이 발견되지 않으면 -1 값이 리턴됩니다.
시작한 후 다음 코드가 컴파일됩니다.이 코드가 실제로 올바른지 알고 싶습니다. 내 머리 위로 들어가고 싶지는 않지만 전문가로부터 의견이 필요합니다. 이 일을 제대로하고 있습니까? 아니면 적어도 올바른 방향으로 가고 있습니까? 당신은 매우 정교한 아무것도 할 haystack
의 일부 인덱스가와 경우에만 경우 needle
이 haystack
의 문자열임을 고려하지 않는 가정
const int MyString::Find(const MyString& other)
{
int start(0);
int counter(0);
int end = other.Size;
int count(0);
int end1 = Size;
int nfound = -1;
char* temp;
if(other.String[0] != '\0' && other.String[0] != ' ')
{
if(other.String[count] == String[counter])
{
start = counter;
for(int i = count; i < end-1;i++)
{
for(int j = counter; j < end1 -1; j++)
{
temp[j] = String[j];
}
}
if(other == temp)
{
return start;
}
else
return nfound;
}
else{
while(other.String[count] != String[counter])
{
counter++;
if(other.String[count] == String[counter])
{
start = counter;
for(int i = count; i < end-1;i++)
{
for(int j = counter; j < end1 -1; j++)
{
temp[j] = String[j];
}
}
if(other == temp)
{
return start;
}
else
return nfound;
}
}
}
}
else
{
return nfound;
}
}
사람들이 코드를 검토 할 장소가 아닙니다. Code Review SE 사이트를 사용해 볼 수도 있습니다. – templatetypedef
Q와 직접적인 관련이 없음 : 메모리 누수가 있습니다 : new [] (할당 할 필요는 없지만) [delete]를 절대로 사용하지 마십시오. – jrok
@jrok 감사합니다! 내가 지적한 누수 때문에 코드를 편집했습니다. – user1363061