Не распознаются символы в консоли 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;
}
Если на вход поступает файл с латиницей - вывод нормальный, при русскоязычном файле - вместо символов знаки нераспознанного символа(�). При выводе строки на русском все работает. В чем может быть проблема?