Не распознаются символы в консоли C++

Есть код, считающий частоту повторения слов в заданном через std::cin файле:

#include <iostream>
#include <fstream>
#include <string>
#include <map>



std::map<std::string, int> histogram;


void record(const std::string& s)
{
    histogram[s]++;
}


void print(const std::pair<const std::string, int>& r)
{
    std::cout << r.first << ' ' << r.second << '\n';
}


int main()
{
    std::string filename;
    std::cin >> filename;
    std::ifstream fin(filename);
    std::istream_iterator<std::string> ii(fin);
    std::istream_iterator<std::string> eos;

    std::for_each(ii, eos, record);
    std::for_each(histogram.begin(), histogram.end(), print);

    return 0;
}

Немного модифицировал его, для подсчета символов:

#include <iostream>
#include <fstream>
#include <string>
#include <map>



std::map<char, int> histogram;


void record(const std::string& s)
{
    for (char ch : s)
        histogram[ch]++;
}


void print(const std::pair<const char, int>& r)
{
    std::cout << r.first << ' ' << r.second << '\n';
}


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

    std::string filename;
    std::cin >> filename;
    std::ifstream fin(filename);
    std::istream_iterator<std::string> ii(fin);
    std::istream_iterator<std::string> eos;

    std::for_each(ii, eos, record);
    std::for_each(histogram.begin(), histogram.end(), print);

    return 0;
}

Если на вход поступает файл с латиницей - вывод нормальный, при русскоязычном файле - вместо символов знаки нераспознанного символа(�). При выводе строки на русском все работает. В чем может быть проблема?


Ответы (0 шт):