Таблицы и преобразования.
Сначала я преобразовал бы строку в верхний или нижний регистр:
#include <cctype>
#include <algorithm>
#include <string>
std::string test_string("mR BroWn");
std::transform(test_string.begin(), test_string.end(),
test_string.begin(),
std::tolower);
Затем я проверял бы исключения или использовал таблицу эквивалентности.Если рассматриваемый символ находится в массиве символов исключения, используйте таблицу эквивалентности.