Мне кажется, что мой function
неоправданно длинный, но я не могу понять, как уменьшить длину без добавления библиотек (не разрешается добавлять дополнительные библиотеки). Я создаю класс String, который должен вести себя как c ++ string
. Я также включил constructors
, чтобы сделать мой код более понятным. Я пытался использовать while (true) loop
, но когда я его создал, он был почти такой же длины, как этот.
String::String() :len(0), str(nullptr)
{}
String::String(const char arr[])
{
len = get_cstr_length(arr);
str = new char[len];
for (int j = 0; j < len; j++)
{
str[j] = arr[j];
}
}
int compare_strings(const String &obj1, const String &obj2)
{
int count = 0;
int len1 = obj1.length();
int len2 = obj2.length();
if (len1 != 0 && len2 != 0)
{
if (len1 < len2)
{
for (int i = 0; i < len1; i++)
{
if (obj1[i] > obj2[i])
return 1;
else if (obj1[i] < obj2[i])
return -1;
else
count++;
}
if (count == len1)
return -1;
}
else
{
for (int i = 0; i < len2; i++)
{
if (obj1[i] > obj2[i])
return 1;
else if (obj1[i] < obj2[i])
return -1;
else
count++;
}
if (count == len2 && len1 != len2)
return 1;
else
return 0;
}
}
else
{
if (len1 == 0 && len2 == 0)
return 0;
else if (len1 == 0 && len2 != 0)
return -1;
else
return 1;
}
}