Проблема с wxToupper и wxTolower Topic is solved
Проблема с wxToupper и wxTolower
Народ, подскажите, может кто сталкивался с проблемой когда в UNICODE-билде указанные в названии темы функции не отрабатывают и возвращают исходное значение. Заранее благодарен.
Таких функций ни я ни справка по вх 2.8.х незнаем:%)
Но если проблема с не латинскими символами, для которых не работают стандартные функции си++, то вот тут есть решение:
преобразование регистра для русских букв в wxWidgets
Но если проблема с не латинскими символами, для которых не работают стандартные функции си++, то вот тут есть решение:
преобразование регистра для русских букв в wxWidgets
Best regards, Nikolay
wxWidgets in russian
Small Notes Manager and Clipboard Manager with History written with wxWidgets
wxWidgets in russian
Small Notes Manager and Clipboard Manager with History written with wxWidgets
Имелись ввиду функции wxString::MakeUpper и wxString::MakeLower. Просто внутри они вызывают вышеуказанные.Nikolay wrote:Таких функций ни я ни справка по вх 2.8.х незнаем:%)
Спасибо за совет, что-то подобное я в итоге и сделал. Но было интересно немножко другое:Nikolay wrote:Но если проблема с не латинскими символами, для которых не работают стандартные функции си++, то вот тут есть решение:
преобразование регистра для русских букв в wxWidgets
http://trac.wxwidgets.org/ticket/8631
Если я не совсем олух в английском то это то, что и у меня, но по какой-то причине данный баг не был устранен.
Вот это и есть самое интересное. Ведь там, вроде, предлагалось нормальное решение.[/url]
Да, но не совсем так. Было предложено всегда под виндой работать через системные функции, игнорируя сишную локаль. (Причем только для строк, с символами работали бы по-старому.) Вадим сказал, что если это надо и делать, то уже под все платформы. Что в будущем, возможно, и будет сделано.Margon wrote: http://trac.wxwidgets.org/ticket/8631
Если я не совсем олух в английском то это то, что и у меня, но по какой-то причине данный баг не был устранен.
Вот это и есть самое интересное. Ведь там, вроде, предлагалось нормальное решение.
-
- Super wx Problem Solver
- Posts: 362
- Joined: Wed Mar 07, 2007 8:10 am
- Location: Russia, Shakhty
Я тут чуть порылся и написал более менее стандартную функцию для С++ без winAPI, но проверить для Linux'а не могу возможно там вместо _wsetlocale нужно поставить wsetlocale.
Code: Select all
void ToLower(wxString & data)
{
int len=data.length()+1;
wxChar * buf = new wxChar[len];
wxStrcpy(buf, data.c_str());
_wsetlocale(LC_ALL, L"ru") ;
for (int i=0; i<len; i++)
buf[i] = std::towlower(buf[i]);
data=buf;
delete [] buf;
}