Не считывает кириллицу из текстового файла
Если в файле латиница, то работает как надо, но когда дело доходит до кириллицы, то метод getline возвращает false.
Исходные данные - города написанные на украинском в одну строку без пробелов (по типу: "КиївВінницяБелзОдесаІлловайськ"). В ситуации, когда в файл вместо городов написана строка на латинице и я ввожу строку, которая имеется в исходной, я получаю вывод на консоль: "Місто є в базі!", но когда в файле кириллическая строка и я ввожу строку которую исходная должна содержать, я получаю на вывод: "Міста немає в базі!". Через отладчик видно, что условие в while не выполняется и цикл просто пропускается.
int main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
const int SIZE = 81;
char buffer[SIZE], input[SIZE];
ifstream fin("text_city_ukr.txt");
cout << "Введіть назву міста для пошуку: ";
cin >> input;
if (!fin.is_open())
{
cout << "Помилка при відкритті файлу!";
return 1;
}
while (fin.getline(buffer, SIZE))
{
if (strstr(buffer, input))
{
cout << "Місто є в базі!" << endl;
system("pause");
return 0;
}
}
cout << "Міста немає в базі!" << endl;
return 0;
}
Ответы (2 шт):
setlocale(LC_ALL, "ru");
вставь в int main()
жаль что не считывает украинский язык, мой совет заменять укр i на английскую i
int main()
{
setlocale(LC_ALL, "Ukrainian") // Для украинского языка
const int SIZE = 81;
char buffer[SIZE], input[SIZE];
ifstream fin("text_city_ukr.txt");
cout << "Введіть назву міста для пошуку: ";
cin >> input;
if (!fin.is_open())
{
cout << "Помилка при відкритті файлу!";
return 1;
}
while (fin.getline(buffer, SIZE))
{
if (strstr(buffer, input))
{
cout << "Місто є в базі!" << endl;
system("pause");
return 0;
}
}
cout << "Міста немає в базі!" << endl;
return 0;
}