Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
Gepar
1181 / 537 / 77
Регистрация: 01.07.2009
Сообщений: 3,517
1

Установка locale (той которой от с++)

30.11.2012, 17:11. Просмотров 1366. Ответов 6
Метки нет (Все метки)

Как это правильно сделать?
C++
1
std::locale::global(std::locale("ru_RU.cp1251"));
так получаю эксепшн. Компилятор gcc. Мне это необходимо потому что я обрабатываю строки с русским текстом и если в visual studio она там как-то автоматом устанавливает locale и собирает проект так что строки с русским текстом сравниваются нормально то в gcc же я так понимаю пока я не установлю locale правильно строки типа string буду возвращать "слово" != "слово".
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.11.2012, 17:11
Ответы с готовыми решениями:

Получить текущий locale. (category, * locale)
Привет! Если стоит: setlocale (LC_ALL, "Ukrainian"); как я могу теперь...

Как кинуть исключение std::locale::global(std::locale("");
Добрый день. Знаю, что на С можно так: if (!setlocale(LC_ALL, "")) { ...

Напечатать квадрат той матрицы, в которой наименьший след
Даны две квадратные вещественные матрицы 10-го порядка. Напечатать квадрат той...

Сумму элементов в той строке, в которой нет отрицательных чисел
Сумму елементов в том ряде в котором нету негативних чисел Добавлено через...

Напечатать квадрат той из двух заданных матриц, у которой наименьший след
С++ Даны две вещественные квадратные матрицы 10-го порядка. Напечатать квадрат...

6
Croessmah
++Ͻ
14610 / 8364 / 1576
Регистрация: 27.09.2012
Сообщений: 20,561
Записей в блоге: 2
Завершенные тесты: 1
30.11.2012, 17:51 2
http://www.rsdn.ru/forum/cpp/3006223.flat
1
Nalik
105 / 64 / 32
Регистрация: 30.11.2012
Сообщений: 846
30.11.2012, 17:52 3
Подключаешь библиотеку #include <clocale> и в коде main пишешь setlocale(LC_CTYPE, "Russian"); //Руссификатор
Пример кода:

C++
1
2
3
4
5
6
7
#include <clocale>
using namespace std;
main () 
{
setlocale(LC_CTYPE, "Russian"); //Поддержка русских символов в с++
cout << "Выводим русские слова на экран";
}
0
AnyOne697
134 / 106 / 10
Регистрация: 22.05.2010
Сообщений: 533
Завершенные тесты: 1
30.11.2012, 17:53 4
Здесь вроде расписано.
Впрочем, юзайте юникод и да будет Вам счастье.
Кликните здесь для просмотра всего текста
The C++ strings library provides the definitions of the basic_string class, which is a class template specifically designed to manipulate strings of characters of any character type. It also includes two specific instantiations: string and wstring, which respectively use char and wchar_t as character types.
И пара ссылок
Вот ещё - насколько я помню wchar в винде 2х битный, поэтому всю таблицу юникода не вмещает, но оно нам и не надо - для русского 2х байтов достаточно. На линукс 99% 4 байта.
1
Gepar
1181 / 537 / 77
Регистрация: 01.07.2009
Сообщений: 3,517
01.12.2012, 14:50  [ТС] 5
Nalik, это ты сишную цацку вспомнил, она мне не помогает, я уже пробовал.
В общем попробовал все предложенные варианты: строки string оно то хранит и выводит как русские, другое дело что при сравнении строк оно всегда говорит что они не равны нифига. Ну его нафиг этот gcc, пойду думать что сделать с студией чтобы она таки отдала x86 приложение ... не переписывать же мне ради gcc всё на wstring.

Добавлено через 17 часов 3 минуты
Разобрался в проблеме: собственно студия позволяет чтобы ifstream.open принимало аргмент типа string, а gcc этого не позволяло и я написал как аргумент к нему string.c_str() из-за чего в одном месте при открытии файла чтение происходило некорректно (имя файла было на русском) ну и в общем после этого сравнивало оно тоже некорректно ...
0
gigas
7 / 1 / 1
Регистрация: 30.11.2012
Сообщений: 91
01.12.2012, 15:03 6
а можно так же скачать файл gccrus а так же g++rus и заменить их в bin, где установлена программа и тогда программа будет на русском компилировать!
0
AnyOne697
134 / 106 / 10
Регистрация: 22.05.2010
Сообщений: 533
Завершенные тесты: 1
02.12.2012, 00:03 7
Цитата Сообщение от Gepar Посмотреть сообщение
не переписывать же мне ради gcc всё на wstring
Так и будем сидеть в омуте однобайтовых кодировок. Переписать на wstring как два пальца об асфальт - в строковых константах добваляем L
C++
1
std::cout << L"Hello world!" << std::endl;
Перед string пишем w-
C++
1
std::cout << std::wstring(L"Hello world!") << std::endl;
И всё!
0
02.12.2012, 00:03
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.12.2012, 00:03

Определить номер той строки, в которой больше всего согласных букв
Переведите, пожалуйста: Uses CRT; Var f,f2:text; s,s2:string; ...

Найти сумму элементов той строки, в которой расположен максимальный элемент матрицы
Дана целочисленная квадратная матрица порядка n. Найти сумму элементов той...

Вывести в новый файл информацию о той продукции, количество которой менее заданной величины.
Решить задачу, используя структуру содержащую члены-данные и члены-функции....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru