Ввожу русские буквы, выводит непонятные символы C++

111
20 декабря 2021, 05:30

Написал программку для расставления букв в алфавитном порядке в любом слове. Поставил setlocale(0, "rus"). После обработки выдаёт непонятные символы. Если на латинице то всё нормально. Что делать, подскажите пожалуйста?

Вот код:

#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
void main()
{
    setlocale(0, "rus");
    string a, b;
    getline(cin, a);
    getline(cin, b);
    // если в строке `a` не нашли символ, который нет в строке `b`
    if (a.find_first_not_of(b) == string::npos) {
        for (size_t i = 0; i < b.length(); ++i)
            //проверяеешь является ли символ буквой
            if (isalpha(b[i]))
                b.erase(i--, 1);
        cout << a << endl << b;
    }
    else {     //сортируешь в алфавитном порядке
        sort(a.begin(), a.end());
        cout << a;
    }
}
Answer 1

Подключите windows.h и напишите две строки:

setConsoleCP(1251);
setConsoleOutputCP(1251);

Это самый простой способ.

Больше информации про setlocale и ее использование тут

READ ALSO
C++: перевод простой дроби в десятичную

C++: перевод простой дроби в десятичную

Подскажите пожалуйста с алгоритмом:

125
Почему код успешно компилируется?

Почему код успешно компилируется?

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

72