std::string перевод русской строки в нижний регистр
От: yaro.  
Дата: 13.07.04 08:21
Оценка:
перевод в нижний регистр не работает...

пробовал и так:

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);

на выходе полный бред... иногда проскакивают слова, но в основном абракадабра...
Re: std::string перевод русской строки в нижний регистр
От: sadomovalex Россия http://sadomovalex.blogspot.com
Дата: 13.07.04 09:11
Оценка:
Здравствуйте, 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);
}
"Что не завершено, не сделано вовсе" Гаусс
Re[2]: std::string перевод русской строки в нижний регистр
От: yaro.  
Дата: 13.07.04 09:25
Оценка:
Нет не консольное....

но теперь заработало !

спасибо большое !
Re[2]: std::string перевод русской строки в нижний регистр
От: yaro.  
Дата: 13.07.04 12:14
Оценка:
но к сожалению очень медленно....

может есть вариант быстрее ?
Re[3]: std::string перевод русской строки в нижний регистр
От: ssm Россия  
Дата: 13.07.04 13:47
Оценка:
Здравствуйте, yaro., Вы писали:

Y>но к сожалению очень медленно....


Y>может есть вариант быстрее ?


рядом идея здесь
Автор: korzhik
Дата: 13.07.04
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.