[GCC] iswupper(L'\x0416') == 0 ?
От: igna Россия  
Дата: 09.11.08 08:36
Оценка:
#include <cctype>
#include <clocale>
#include <iostream>
using namespace std;

int main()
{
    setlocale(LC_ALL, "ru_RU");
    cout << iswupper(L'\x0416') << '\n';
}


Выводит 0. Почему? (0x0416 это код прописной буквы Ж.)
Re: [GCC] iswupper(L'\x0416') == 0 ?
От: Юрий Жмеренецкий ICQ 380412032
Дата: 09.11.08 10:50
Оценка: 1 (1)
Здравствуйте, igna, Вы писали:

I>
I>#include <cctype>
I>#include <clocale>
I>#include <iostream>
I>using namespace std;

I>int main()
I>{
I>    setlocale(LC_ALL, "ru_RU");
I>    cout << iswupper(L'\x0416') << '\n';
I>}
I>


I>Выводит 0. Почему? (0x0416 это код прописной буквы Ж.)


setlocale что возвращает? Второй параметр setlocale implementation-defined. Для VC + windows допустимыми являются "Russian_Russia" / "Russian_Russia.1251" / "rus" и т.п.
Re[2]: [GCC] iswupper(L'\x0416') == 0 ?
От: igna Россия  
Дата: 10.11.08 10:20
Оценка:
Здравствуйте, Юрий Жмеренецкий, Вы писали:

ЮЖ>setlocale что возвращает? Второй параметр setlocale implementation-defined. Для VC + windows допустимыми являются "Russian_Russia" / "Russian_Russia.1251" / "rus" и т.п.


Возвращает 0 несмотря на то, что "ru_RU" должно быть корректным именем локали: здесь. Правда комманды locale, чтобы убедиться в этом, у меня почему-то нет. Использую cygwin.
Re: [GCC] iswupper(L'\x0416') == 0 ?
От: Roman Odaisky Украина  
Дата: 11.11.08 20:49
Оценка:
Здравствуйте, igna, Вы писали:

I> setlocale(LC_ALL, "ru_RU");

I> cout << iswupper(L'\x0416') << '\n';

А что, в другой локали буква «Ж» уже не будет прописной?
До последнего не верил в пирамиду Лебедева.
Re[2]: [GCC] iswupper(L'\x0416') == 0 ?
От: igna Россия  
Дата: 12.11.08 05:44
Оценка:
Здравствуйте, Roman Odaisky, Вы писали:

RO>Здравствуйте, igna, Вы писали:


I>> setlocale(LC_ALL, "ru_RU");

I>> cout << iswupper(L'\x0416') << '\n';

RO>А что, в другой локали буква «Ж» уже не будет прописной?


Не знаю, а что, будет?

Для isupper этого конечно нельзя гарантировать, для iswupper вроде было бы можно, но где бы найти эту гарантию черным по белому?
Re: [GCC] iswupper(L'\x0416') == 0 ?
От: Zhendos  
Дата: 13.11.08 16:46
Оценка: 2 (1)
Здравствуйте, igna, Вы писали:

I>
I>    setlocale(LC_ALL, "ru_RU");
I>


I>Выводит 0. Почему? (0x0416 это код прописной буквы Ж.)


на linux если поменять на ru_RU.UTF-8 выводит 1

#include <cctype>
#include <clocale>
#include <iostream>
using namespace std;

int main()
{
    setlocale(LC_ALL, "ru_RU.UTF-8");
    cout << iswupper(L'\x0416') << '\n';
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.