Сортировка (std::sort) по украинскому алфавиту

234
17 сентября 2021, 07:30

сделал сортировку по алфавиту для структур по первому элементу. но украинские буквы і ї ґ выводяться вверху. Моет быть в locale("rus_rus.1251") надо ввести како-то параметр для укр языка, но я не нашел.

cout << endl << "ЗАВДАННЯ 2" << endl;
    int razmer_masiva;
    cout << "Введіть кількість рядків для таблиці(7-10 цитата з завдання 'Скласти програму, у якій будуть вводитися 7 - 10 рядків таблиці') " << endl;
    while (!(cin >> razmer_masiva) || (cin.peek() != '\n') || razmer_masiva > 10 || razmer_masiva < 7)//Цикл который очищает оставшиеся символы в потоке
    {
        cin.clear();//сброс битов ошибок входного стандартного потока
        while (cin.get() != '\n');
        cout << "Неправильний ввід, будь ласка, повторіть ввід спочатку : " << endl;
    }
    vector<R_T> R_T_vector;
    for (int i = 0; i < razmer_masiva; i++) {
        string firm;
        int Number_of_products;
        long Annual_sales;
        float Part_of_the_market;
        cout << "Введіть Фірму|Кількість продуктів|Річний об’єм продажу ($)|Частину ринку (%%)" << endl;
        while (!(cin >> firm >> Number_of_products >> Annual_sales >> Part_of_the_market) || (cin.peek() != '\n'))//Цикл который очищает оставшиеся символы в потоке
        {
            cin.clear();//сброс битов ошибок входного стандартного потока
            while (cin.get() != '\n');
            cout << "Неправильний ввід, будь ласка, повторіть ввід спочатку : " << endl;
        }
        firm[0] = toupper(firm[0], locale("rus_rus.1251"));
        R_T_vector.push_back(ryadok_tablici(firm, Number_of_products, Annual_sales, Part_of_the_market));
    }
    printf("+---------------------------------------------------------------------------+\n");
    printf("|Фірми – виробники СКБД                                                     |\n");
    printf("+---------------------------------------------------------------------------+\n");
    printf("|Фірма       |Кількість продуктів|Річний об’єм продажу ($)|Частина ринку (%%)|\n");
    printf("+---------------------------------------------------------------------------+\n");
    for (int i = 0; i < razmer_masiva; i++) {
        printf("|%12s|%19d|%24d|%17.1f|\n", R_T_vector[i].firm.c_str(), R_T_vector[i].Number_of_products, R_T_vector[i].Annual_sales, R_T_vector[i].Part_of_the_market);

    }
    printf("+---------------------------------------------------------------------------+\n");
    sort(R_T_vector.begin(), R_T_vector.end(), compareRT);
    printf("+---------------------------------------------------------------------------+\n");
    printf("|Фірми – виробники СКБД                                                     |\n");
    printf("+---------------------------------------------------------------------------+\n");
    printf("|Фірма       |Кількість продуктів|Річний об’єм продажу ($)|Частина ринку (%%)|\n");
    printf("+---------------------------------------------------------------------------+\n");
    for (int i = 0; i < razmer_masiva; i++) {
        printf("|%12s|%19d|%24d|%17.1f|\n", R_T_vector[i].firm.c_str(), R_T_vector[i].Number_of_products, R_T_vector[i].Annual_sales, R_T_vector[i].Part_of_the_market);

    }
    printf("+---------------------------------------------------------------------------+\n");
    return 0;
}

функция

bool compareRT(R_T a, R_T b) {
    return a.firm.compare(b.firm) < 0;
}

структура

typedef struct ryadok_tablici {
    string firm;
    int Number_of_products;
    long Annual_sales;
    float Part_of_the_market;
    ryadok_tablici(string firm, int Number_of_products, long Annual_sales, float Part_of_the_market) {
        this->firm = firm;
        this->Number_of_products = Number_of_products;
        this->Annual_sales = Annual_sales;
        this->Part_of_the_market = Part_of_the_market;
    }
}R_T;
READ ALSO
С++. ofstream не записывает в файл

С++. ofstream не записывает в файл

Не записывает в файлМожет ли быть ошибка с правами доступа?если да, то как её решить?подскажите пожалуйста, try catch уже пробовала

106
C++, когда вызывается конструктор статичного объекта?

C++, когда вызывается конструктор статичного объекта?

Подскажите, пожалуйста, когда для статичного объекта в C++ вызывается конструктор?

120
ненужные файлы codeblocks

ненужные файлы codeblocks

в codeblocks при работе создается куча ненужных файлов вроде:

104
Как называется обратный метод к next()? C++

Как называется обратный метод к next()? C++

Метод next () - возвращает указатель/итератор на следующий за каким-л элементомКак называется обратный метод? В голову пришёл back, но как вижу,...

125