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

Тема в разделе "MS Visual C++", создана пользователем Alvellu, 27 мар 2012.

  1. Alvellu

    Alvellu Гость

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

    Код (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;
    }
     
  2. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Регистрация:
    3 ноя 2010
    Сообщения:
    1.344
    Симпатии:
    0
    Может это связано с тем что файл с буквами у тебя записан не в UNICODE !?
     
  3. a0z

    a0z Well-Known Member

    Регистрация:
    15 мар 2011
    Сообщения:
    109
    Симпатии:
    0
    Наиболее простое решение:

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

Поделиться этой страницей