@yraiv

Почему русские буквы не выводятся в C++?

Почему в консоли не выводится русский язык, цифру выводит как надо, а русских букв нет просто?
#include <iostream>
#include <fstream>
#include <sstream>
#include <string>
#include <locale>

int countOccurrences(const std::string& word, char target) {
    int count = 0;
    for (char c : word) {
        if (c == target) {
            count++;
        }
    }
    return count;
}

int main() {
    std::setlocale(LC_ALL, "ru_RU.UTF-8"); 

    std::ifstream file("Test.txt");
    if (!file) {
        std::cerr << "Ошибка открытия файла." << std::endl;
        return 1;
    }

    std::string maxWord;
    int maxCount = 0;

    std::string line;
    while (std::getline(file, line)) {
        std::istringstream iss(line);
        std::string word;
        while (iss >> word) {
            int count = countOccurrences(word, 'а');
            if (count > maxCount) {
                maxCount = count;
                maxWord = word;
            }
        }
    }

    std::cout.imbue(std::locale("ru_RU.UTF-8"));
    std::cout << "Максимальное количество 'г' в слове: " << maxCount << std::endl;

    return 0;
}
  • Вопрос задан
  • 1040 просмотров
Решения вопроса 2
@dima20155
you don't choose c++. It chooses you
Потому что кириллица кодируется минимум 2 байтами.
Вам нужна длинная строка, которая основана на wchar.

https://stackoverflow.com/questions/402283/stdwstr...
Ответ написан
Комментировать
mayton2019
@mayton2019
Bigdata Engineer
Кажется проблема имеет отношение только к Windows консоли. Надо проверить. Автор сделай так

C:\>chcp
Active code page: 437

C:\>chcp 866
Active code page: 866


И запусти свой екзешник именно в ней. И потом еще попробуй вот так

C:\>chcp  65001
Active code page: 65001

и тоже запусти
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@vanyamba-electronics
Возможно потому, что должно быть
std::setlocale(LC_ALL, "");
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы