MyString :: Найти, что находит строку в более крупной строке и возвращает начальную позицию подстроки. Обратите внимание, что ваше местоположение строки начинается с 0 и заканчивается длиной -1. Если строка не найдена, возвращается значение -1.Обработка ошибок подстроки и поиска
MyString :: Подстрока (начало, длина). Этот метод возвращает подстроку исходной строки, которая содержит те же символы, что и исходная строка, начинающаяся с начала местоположения и до тех пор, как длина.
Мои функции в файле .cpp являются:
MyString MyString::Substring(int start, int length)
{
char* sub;
sub = new char[length+1];
while(start != '\0')
{
for(int i = start; i < length+1; i++)
{
sub[i] = String[i];
}
}
return MyString(sub);
}
const int MyString::Find(const MyString& other)
{
int start(0);
int counter(0);
int end = other.Size;
int end1 = Size;
int nfound = -1;
if(end > end1)
{
return nfound;
}
int i = 0, j = 0;
for(i = 0; i < end1; i++)
{
for(j = 0; j < end; j++)
{
if(((i+j) >= end1) || (String[i+j] != other.String[j]))
{
break;
}
}
if(j == end)
{
return i;
}
}
return nfound;
}
Вызывающий функций в файле main.cpp являются:
cout << "Please enter two strings. ";
cout << "Each string needs to be shorter than 256 characters or terminated by /\n." << endl;
cout << "The first string will be searched to see whether it contains exactly the second string. " << endl;
cin >> SearchString >> TargetString; // Test of cascaded string-extraction operator
if(SearchString.Find(TargetString) == -1) {
cout << TargetString << " is not in " << SearchString << endl;
} else {
cout << TargetString << " is in " << SearchString << endl;
cout << "Details of the hit: " << endl;
cout << "Starting poisition of the hit: " << SearchString.Find(TargetString) << endl;
cout << "The matching substring is: " << SearchString.Substring(SearchString.Find(TargetString), TargetString.Length());
}
После компиляции и побежал, я получаю:
Введите две строки. Каждая строка должна быть короче 256 символов или завершена/ . Будет найдена первая строка, чтобы увидеть, содержит ли она ровно вторую строку.
найти
в
в находится в найти
Подробной информации о хите:
Начиная poisition хита: 1 ^ C
Я в конечном итоге, прервите программу с помощью элемента управления C, но я уверен, что с моим кодом что-то не так, что я просто не вижу. Помоги пожалуйста! Что я делаю не так?
Я думаю, вы опустили много деталей. – user845279