Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Gepar
1178 / 534 / 20
Регистрация: 01.07.2009
Сообщений: 3,517
#1

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

30.11.2012, 17:11. Просмотров 1124. Ответов 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 (той которой от с++) (C++):

Получить текущий locale. (category, * locale) - C++
Привет! Если стоит: setlocale (LC_ALL, "Ukrainian"); как я могу теперь получить его аргументы? То-есть, int category и const char *...

Как кинуть исключение std::locale::global(std::locale(""); - C++
Добрый день. Знаю, что на С можно так: if (!setlocale(LC_ALL, "")) { perror("Couldn't set locale"); exit(EXIT_FAILURE); }...

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

Сумму элементов в той строке, в которой нет отрицательных чисел - C++
Сумму елементов в том ряде в котором нету негативних чисел Добавлено через 11 секунд #include<iostream> #include<fstream> ...

Определить номер той строки, в которой больше всего согласных букв - C++
Переведите, пожалуйста: Uses CRT; Var f,f2:text; s,s2:string; i,l,n1,n2,n,max,ind,c:integer; begin ...

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

6
Croessmah
Ушел
Эксперт CЭксперт С++
13557 / 7707 / 872
Регистрация: 27.09.2012
Сообщений: 18,996
Записей в блоге: 3
Завершенные тесты: 1
30.11.2012, 17:51 #2
http://www.rsdn.ru/forum/cpp/3006223.flat
1
Nalik
67 / 53 / 17
Регистрация: 30.11.2012
Сообщений: 780
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 / 5
Регистрация: 22.05.2010
Сообщений: 533
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
1178 / 534 / 20
Регистрация: 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 / 5
Регистрация: 22.05.2010
Сообщений: 533
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
Привет! Вот еще темы с ответами:

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

Матрицы. Распечатать квадрат той из них, в которой сумма элементов в двух главных диагоналях меньше - C++
Написать программу. Даны две квадратные действительны матрицы размерностью n * n. Распечатать квадрат той из них, в которой сумма элементов...

Найти сумму элементов той строки матрицы, в которой разница между max и min элементами максимальна - C++
Дана вещественная, квадратная матрица порядка N. Найти сумму элементов той строки в которой разница между максимальным и минимальным...

Операции над строкой. Подсчитать количество слов, которое начинается с той буквы, которой заканчивается предыдущее слово - C++
Дано предложение, слова в нем разделены пробелами. Подсчитать количество слов, которое начинается с той буквы, которой заканчивается...


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

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

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