В настоящее время я работаю над некоторым простым средством проверки правописания / словарем для моего экзаменационного проекта.
Ничего особенного, но я столкнулся с проблемой при сравнении слов, которые используют региональные символы — в данном случае польские.
Как это работает?
1. Пользователь вводит конкретное слово.
2. Программа проверяет, существует ли слово пользователя в словаре (a.txt).
3. Программа показывает результаты.
Для целей тестирования я ограничил словарь только словами «a», поскольку весь словарь на польском языке весит около 38 МБ, поэтому мне придется реализовать какой-то алгоритм, чтобы ускорить процесс поиска, но сейчас это не так.
В основном программа работает отлично. Когда пользователь вводит такие слова, как: auto, abakus, atom — все в порядке.
Но ошибка возникает, когда пользователь вводит слова, содержащие региональные символы, такие как «abażur», «aranżując» и т. Д.
setLocale не очень помогает.
Я пытался приписать каждому региональному символу конкретное число ascii — это на самом деле работает для cout и cin, но не для сравнения строк.
Есть еще предложения? У меня заканчиваются идеи.
int main() {
setlocale(LC_ALL, "");
string line;
string word;
cout << tr("Zazółć gęślą jaźń") << endl; //test line1
cout << "Abażur" << endl; //test line2
cout << "Enter word: ";
cin >> word;
ifstream myfile("a.txt"); //open dictionary
if (myfile.is_open())
{
while (getline(myfile, line))
{
//cout << line << '\n';
if (word == line) //compare current words
{
cout << "Word exist in dictionary!" << endl << word << endl << line << endl;
flag1 = 1;
myfile.close();
}
}
if (flag1 == 1)
{
cout << "Search successful!" << endl;
myfile.close();
}
else
cout << "Search failed! No such word in dictionary." << endl;
myfile.close();
}
else cout << "Unable to open file";
cin >> a;
return 0;
}
Задача ещё не решена.
Других решений пока нет …