Чтение Русских Символов Из Файла

  • Автор темы Alvellu
  • Дата начала
A

Alvellu

#1
Помогите пожалуйста с решением проблемы.
Программа должна считывать символы из файла написанного заглавными русскими буквами и считать сколько раз в тексте повторяется та или иная буква.
Не могу найти решения для сравнения полученных символов. Программа не считает символы ни в какую.
Подскажите где ошибка, пожалуйста.

C++:
#include<iostream>
#include<fstream>
#include<cctype>
#include<conio.h>
using namespace std;

int main()
{
setlocale (LC_ALL, "Russian");

wifstream txtfile;
wchar_t ch;
const wchar_t alph[33]={L'А',L'Б',L'В',L'Г',L'Д',L'Е',L'Ё',L'Ж',L'З',L'И',L'Й',L'К',L'Л',L'М',L'Н',L'О',L'П',L'Р',L'С',L'Т',L'У',L'Ф',L'Х',L'Ц',L'Ч',L'Ш',L'Щ',L'Ъ',L'Ы',L'Ь',L'Э',L'Ю',L'Я'};
int letters[33] = {0};


txtfile.open("txtfile.txt", ios::binary);
if (!txtfile) return -1;

while(txtfile.get(ch))
{
if(isalpha(ch))
{
for(int i=0;i<33;i++)
{
if(ch==alph[i]) letters[i]++;
}
}
}

for(int i=0;i<33;i++) 
wcout << alph[i] << L'\t' << letters[i] << endl;

txtfile.close();

wcout << endl << L"Press any key\n";
getch();

return 0;
}
 

lazybiz

Well-known member
03.11.2010
1 339
0
#2
Может это связано с тем что файл с буквами у тебя записан не в UNICODE !?
 

a0z

Well-known member
15.03.2011
108
0
#3
Наиболее простое решение:

1. сохранить файл в CP1251
2. Убрать L перед буквами, и поправить типы (wchar_t -> char)
3. Сохранить исходник в CP1251