Поиск по начальной букве
Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.
Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.
Здрасьте, друзья. У меня возникла проблема. Мне нужно организовать поиск по введённой букве в массиве слов. То есть введена буква 'А', а поиск выдаёт все слова на букву А из массива. Помогите, пожалуйста, как это можно сделать?
«Массив слов» — это понятно, а слова хранятся в виде чего? Массива символов (char) или в объектах класса string? Или ещё в чём-то?
Кодировка символов в массиве слов и введённой буквы совпадают?
1.Вообще, обычно принято выкладывать свой вариант кода.
2.Мне кажется, что организовывать поиск по массиву, не совсем целесообразно, поэтому лучше сделать поиск в файле. Получается что-то вроде «взрослой» базы данных.
3.Вот моя реализация:
Нужно пояснять код?
porshe, мне кажется, что в данном случае, Слава новичок не знает как подступиться к решению задачи. Поэтому своего варианта кода у него ещё нет.
Поэтому я задал уточняющие вопросы.
На счёт «взрослой» базы данных — это ты погорячился ))) Кстати, СУБД действительно хранят данные на диске. Но за каждым чихом они к диску не обращаются — слишком медленно, а держат необходимый объём информации в памяти (в кэше). Так что «где искать» — это ещё очень большой вопрос )))
По поводу реализации.
(1) Обязательное условие: слова в файле (кириллица) должны быть записаны в кодировке cp-866 (при работе под Windows).
(2) Функция (макрос)
isalnum()
может неправильно реагировать на не-латиницу. Зависит от очень многих условий.(3) Переменную
filename
лучше делать какstring
. В Windows раньше вроде было ограничение на длину полного имени файла (с путём) в 256 символов. Но его как-то не очень сильно придерживались. А в *nix, кажется, вообще нет такого ограничения (линуксоиды, я прав?).(4) Почему ты использовал для
word
вектор? Логичнееstring
. Да и вcout
выводить проще.Спасибо вам конечно огромное за труд, но видимо мой уровень способен только на перебор с 26 вариантами букв англ языка -_-
Ладно, оставлю пока что эту тему, но у меня есть вопрос.
На Win XP кодировка иная, нежели на Win 7? Если да, то как устранить проблему с кракозябрами при выводе в программе, написанную на 7, а открытую на хп?
Спасибо
В винде, начиная с ветхозаветной Win95, ничего не поменялось: под GUI используется cp-1251, для консоли — cp-866.
Если не ошибаюсь, в XP надо поставить в Control Panel -> Regional and Language Options -> Advanced -> Language for non-Unicode programs -> Russian.
это я на будущее)
Я знаю, это была шутка))
Да,
string
использовать легче, просто я недавно изучилvector
и почему-то мой мозг зациклился на этом, и мне как-то не подумалось