Для функции, определенной в терминах C-строк (символьных указателей), переход "вверх" к строкам STL кажется ужасно неэффективным, но, возможно, это совершенно преждевременное мышление с моей стороны.
Я бы рассмотрел прямое решение C«проще», но опять же, это зависит от перспективы.
#include <ctype.h>
void foo(const char *s1, const char *s2)
{
size_t i, n = 7;
for(i = 0; i < n; i++)
{
if(tolower(s1[i]) != tolower(s2[i]))
return;
if(s[i] == '\0' && s2[i] == '\0')
break;
}
/* Strings are equal, do the work. */
...
}
Предполагается, что если обе строки заканчиваются до того, как длина префикса исчерпана, это совпадение.
КонечноВышеприведенное предполагает использование строк ASCII, в которых tolower()
имеет смысл.