Аналог функции transform(, , , toupper) из стандартной библиотеки для русского языка

Рейтинг: 1Ответов: 1Опубликовано: 27.09.2014

Подскажите аналог функции transform(str.begin(), str.end(), str.begin(), toupper) из стандартной библиотеки для русского языка. Английский текст преобразовывает, русский не преобразовывает.

#include <iostream>
#include <Windows.h>
#include <string>
#include <algorithm>
using namespace std;


int main(int argc, char* argv[]){
    SetConsoleCP(1251);// установка кодовой страницы win-cp 1251 в поток ввода
    SetConsoleOutputCP(1251); // установка кодовой страницы win-cp 1251 в поток вывода

    string str = "Привет! hello";
    transform(str.begin(), str.end(), str.begin(), toupper);

    cout << str << 10 + 1 << endl;
    system("pause");
    return 0;
}

Ответы

▲ 1

Ответ тут. Нехватало заголовка с настройками, нужно добавить #include <locale.h> и настройку локали setlocale(LC_ALL, "rus");.