Здравствуйте, yaro., Вы писали:
Y>перевод в нижний регистр не работает...
Y>на выходе полный бред... иногда проскакивают слова, но в основном абракадабра...
А ты случайно не консольное приложение для Win32 пишешь и результат преобразования на консоли проверяешь ?

А так вот:
#include <string>
#include <locale>
#include <algorithm>
#include <windows.h>
using namespace std;
struct toLower
{
toLower(locale loc): m_loc(loc) {}
char operator()(char c)
{
return tolower(c, m_loc);
}
locale m_loc;
};
void main()
{
string s = "АЛЕКС";
toLower tl(locale("rus"));
transform(s.begin(), s.end(), s.begin(), tl);
MessageBox(NULL, s.c_str(), "info", MB_OK);
}