#include <algorithm>
#include <functional>
#include <iostream>
#include <locale>
#include <string>
/////////////////////////////////////////////////////////////////////////////////////////
typedef std::string T_str;
/////////////////////////////////////////////////////////////////////////////////////////
char tolower_rus( char c )
{
return tolower
(
c,
std::locale("")
);
}
/////////////////////////////////////////////////////////////////////////////////////////
T_str string_tolower_rus( const T_str& str )
{
T_str res_str = str;
std::transform
(
str.begin (),
str.end (),
res_str.begin (),
tolower_rus
);
return res_str;
}
/////////////////////////////////////////////////////////////////////////////////////////
int main()
{
std::locale::global(std::locale(""));
T_str s = "Сегодня прекрасный солнечный день! Пошли купаться?";
std::cout << string_tolower_rus(s)
<< std::endl;
}
CiNpbmNsdWRlIDxhbGdvcml0aG0+CiNpbmNsdWRlIDxmdW5jdGlvbmFsPgojaW5jbHVkZSA8aW9zdHJlYW0+CiNpbmNsdWRlIDxsb2NhbGU+CiNpbmNsdWRlIDxzdHJpbmc+Ci8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCnR5cGVkZWYgc3RkOjpzdHJpbmcgICAgIFRfc3RyOwovLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwpjaGFyICB0b2xvd2VyX3J1cyggY2hhciBjICkKewogICAgcmV0dXJuICB0b2xvd2VyCiAgICAgICAgICAgICAgICAoCiAgICAgICAgICAgICAgICAgICAgYywKICAgICAgICAgICAgICAgICAgICBzdGQ6OmxvY2FsZSgiIikKICAgICAgICAgICAgICAgICk7Cn0KLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KVF9zdHIgIHN0cmluZ190b2xvd2VyX3J1cyggY29uc3QgVF9zdHImICBzdHIgKQp7CiAgICBUX3N0ciAgIHJlc19zdHIgICAgID0gICBzdHI7CiAgICAgICAgCiAgICBzdGQ6OnRyYW5zZm9ybQogICAgICAgICgKICAgICAgICAgICAgc3RyLmJlZ2luICAgICAgICgpLAogICAgICAgICAgICBzdHIuZW5kICAgICAgICAgKCksCiAgICAgICAgICAgIHJlc19zdHIuYmVnaW4gICAoKSwKICAgICAgICAgICAgdG9sb3dlcl9ydXMKICAgICAgICApOwogCiAgICByZXR1cm4gIHJlc19zdHI7Cn0KLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KaW50IG1haW4oKQp7CiAgICBzdGQ6OmxvY2FsZTo6Z2xvYmFsKHN0ZDo6bG9jYWxlKCIiKSk7CiAgICBUX3N0ciAgIHMgICA9ICAgItCh0LXQs9C+0LTQvdGPINC/0YDQtdC60YDQsNGB0L3Ri9C5INGB0L7Qu9C90LXRh9C90YvQuSDQtNC10L3RjCEg0J/QvtGI0LvQuCDQutGD0L/QsNGC0YzRgdGPPyI7CiAKICAgIHN0ZDo6Y291dCAgIDw8ICBzdHJpbmdfdG9sb3dlcl9ydXMocykKICAgICAgICAgICAgICAgIDw8ICBzdGQ6OmVuZGw7Cn0K