Было бы легко сделать все в нижнем регистре и найти его, но я хочу найти строку с исходной капитализацией, чтобы я мог поместить ее в указатель и напечатать ее позже. Например, FIND_WORD выкуп. Файл Слово найдено. Линия добавлена DISPLAY rAnSoM nOtE. yOu HaVe TiLl nOon.Как найти строку в txt-файле с нечувствительностью к регистру и все еще сохранить капитализацию части? В C++
ответ
Пройдите файл по строкам. Для каждой строки пройдите строку от начала до конца.
Для каждой начальной точки в строке выполните безразмерное сравнение последующих символов в строке с символами слова, которое вы пытаетесь найти. Если все они совпадают, выведите эту целую строку, как было первоначально прочитано.
Иными словами, не конвертировать ничего в нижний регистр. Вместо этого сделайте регистр без учета регистра.
Как выглядит код для без учета регистра? если ('B' == 'б')? –
Это может быть 'if (std :: tolower (x) == std :: tolower (y))' или посмотреть [эти ответы] (http://stackoverflow.com/questions/11635/case-insensitive-string -comparison-в-с). –
И ваш вопрос? –
@DavidSchwartz Вопрос указан в названии. –
@NeilKirk Oh. Хорошо. Тогда ответ тривиален - см. Мой ответ. –