перевод в нижний регистр не работает...
пробовал и так:
setlocale (LC_ALL, "rus");
for (std::string::iterator it = st.begin(); it != st.end(); it++)
*it = _tolower(*it);
и кодировки перебирал:
setlocale (LC_ALL, "rus.1251");
for (std::string::iterator it = st.begin(); it != st.end(); it++)
*it = _tolower(*it);
и так:
std::locale loc("rus");
for (std::string::iterator it = st.begin() ; it != st.end(); it ++ )
*it = use_facet<ctype<char> >(loc).tolower(*it);
на выходе полный бред... иногда проскакивают слова, но в основном абракадабра...
Здравствуйте, 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);
}
но к сожалению очень медленно....
может есть вариант быстрее ?
Здравствуйте, yaro., Вы писали:
Y>но к сожалению очень медленно....
Y>может есть вариант быстрее ?
рядом идея
здесьАвтор: korzhik
Дата: 13.07.04