У меня есть 2 строки: in
, которая содержит ссылку, первоначально введенную пользователем (предположим, что это «http://google.com/test"), и found
», которая уже была найдена посторонней частью этой программы.
Цель этой функции - сравнить секцию строки между http://
и /test
, то есть: "google.com"
Проблема, с которой я сталкиваюсь, заключается в том, что цикл не добавляет к строке сравнения, таким образом, более поздняя попытка сравнить 2 строки в программе во время выполнения.
bool isLinkExternal(string in, string found)
{
string compare = "";
bool isExternal = false;
//Get domain of original link
for (int i = 6; in[i] != '/'; i++)
{
compare += in[i];
}
system("pause");
//Compare domains of original and found links
if (found.compare(7,compare.length(),compare) != 0)
isExternal = true;
return isExternal;
}
Ошибка:
Необработанное исключение типа
«System.Runtime.InteropServices.SEHException» произошло в
ParseLinks.exe
Строка кода, на которую он указывает:
if (found.compare(7,compare.length(),compare) == 0)
Фиксированный код (рабочий):
bool isLinkExternal(string in, string found)
{
const int len = found.length();
int slashcount = 0;
string comp;
//Parse found link
for (int i = 0; i != len; i++)
{
//Increment when slash found
if (found[i] == '/')
{
slashcount++;
}
if (slashcount < 3)
{
comp += found[i];
}
}
//Compare domains of original and found links
if (in.compare(0,comp.length(),comp) == 0)
return false;
else
return true;
}