Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/18: Рейтинг темы: голосов - 18, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 25.09.2013
Сообщений: 18
1

Кроссплатформенный перевод русских букв в верхний/нижний регистр

15.04.2014, 11:42. Показов 3251. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день.
В прикрепленном топике описываются способы вывода русских букв на консоль. Но они почти все подвязаны под винду.
Более того, стандартная функция std::tolower/toupper не работает с русскими буквами.
Подскажите кроссплатформенный вариант перевода русских букв в другой регистр, считывать я буду с std::cin, файлов.
Нужна работа на nix и винде. Пробовал буст, но он тоже работает только с англо буквами. Если подцепляться конкретно к винде, то не будет компилиться под nix системами. Вот в чём проблема.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.04.2014, 11:42
Ответы с готовыми решениями:

Перевод букв в нижний регистр
Как перевести все буквы строки введенной с клавиатуры в нижний регистр?

Перевод всех строчных букв в верхний регистр
Переведите все строчные буквы-символы в верхний регистр

Верхний и нижний регистр
Напишите программу, которая читает клавиатурный ввод до символа @ и повторяет его, за...

Строки в С++. Верхний и нижний регистр
char alphabet; int i; char letter; for(letter='A',i=0;letter<='Z'; letter++,i++)...

4
19409 / 10028 / 2443
Регистрация: 30.01.2014
Сообщений: 17,678
15.04.2014, 12:19 2
Aitar, Оно работает с русскими буквами. Нужно только верную локаль выставить.
0
0 / 0 / 0
Регистрация: 25.09.2013
Сообщений: 18
16.04.2014, 02:05  [ТС] 3
Пробовал с "rus" - не работало.
С rus_rus.866 работает.
Будет ли этотже способ работать и под nix системами ?
Как я понял какую локаль ставить зависит от кодировки текстового файла. А что если предполагается подача файла с разными кодировками ?
0
Заблокирован
16.04.2014, 03:00 4
Напишите руками.
Тут gazlan уже toupper сделал и чисто для консоли и для вывода в файл:
Написать программу перевода строчных букв в прописные буквы
Написать программу перевода строчных букв в прописные буквы

Назад - аналогично.
Посмотрите кодировки СР866 и СР1251 и уясните, что и когда нужно.
Вложения
Тип файла: pdf ascii.pdf (164.5 Кб, 17 просмотров)
0
19409 / 10028 / 2443
Регистрация: 30.01.2014
Сообщений: 17,678
16.04.2014, 09:36 5
Лучший ответ Сообщение было отмечено Убежденный как решение

Решение

Цитата Сообщение от Aitar Посмотреть сообщение
Как я понял какую локаль ставить зависит от кодировки текстового файла.
Локаль не зависит от кодировки текстового файла. От кодировки текстового файла зависит то, что будет содержать строка. Общий и правильный подход - не зашивать локализованные строки в исходник. Посмотри на подход, который предлагает Qt, основная суть:
1) Представление строк приложения едино (юникод);
2) Локализованные строки хранятся отдельно в контролируемом месте в какой-то конкретной кодировке;
3) Программа по-умолчанию использует текущую системную локаль.
----
Если брать конкретно функции toupper и tolower, то это дожны быть функции, которые работают с юникодом. Под windows принято использовать wchar_t варианты строк (ucs-2), в unix практически повсеместно используется char (utf-8).

Цитата Сообщение от Aitar Посмотреть сообщение
Будет ли этотже способ работать и под nix системами ?
Будет, только локаль там называется подругому. Это, можно считать, настроечная информация. Она должна определяться при старте программы (или в настройках).

По поводу кодировок и компилятора:
GCC - по-умолчанию считает, что файл в кодировке UTF-8. VC++, кажется, ставит кодировку в соответствии с локализацией системы, т.е. для русской windows это будет CP1251. Именно исходя из этого, хранить локализованные строки в исходнике - неправильно.
По поводу самописных вещей - зачем, когда есть стандартные. CP1251 почти не применяется в *nix, да и завязываться на однобайтную кодировку когда весь мир использует юникод - точно непортабельно.
1
16.04.2014, 09:36
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
16.04.2014, 09:36
Помогаю со студенческими работами здесь

Верхний и нижний регистр буквы
#include <cctype> #include <iostream> int main() { using namespace std; char ch; ...

Преобразование строки сначала в верхний регистр, потом в нижний
Напишите программу, которая преобразовывает все символы введенной строки сначала в верхний регистр...

Перевод символов в верхний/нижний регистры
Ребят. Подскажите как прописать функцию. Для перевода букв a. toLower – перевод буквы в нижний...

Перевод в нижний регистр
Приветствую . Прошу помощи , выдаёт ошибку при переводе в нижний регистр , в чём проблема ? ...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
[Golang] 121. Best Time to Buy and Sell Stock
alhaos 28.01.2025
В этой задаче мы получаем слайс целых чисел, которые означают цену акции в разные моменты времени, и должны вернуть максимально возможную прибыль от купли продажи акции. / / . . .
Проектирование и моделирование
hw_wired 28.01.2025
Введение в моделирование Моделирование представляет собой один из фундаментальных методов научного познания, который позволяет изучать объекты и явления через создание их упрощенных аналогов. В. . .
Алгоритмы и исполнители
hw_wired 28.01.2025
Введение в алгоритмы В современном мире информационных технологий алгоритмы играют основополагающую роль в решении различных задач и автоматизации процессов. Алгоритм представляет собой точную. . .
Хранение информации
hw_wired 28.01.2025
Введение: Роль систем хранения информации в современном мире В современную эпоху цифровых технологий эффективное хранение информации становится одним из ключевых факторов успешного развития любой. . .
Обработка числовой информации
hw_wired 28.01.2025
Введение в обработку числовой информации В современном мире обработка числовой информации стала неотъемлемой частью как профессиональной деятельности, так и повседневной жизни. Электронные таблицы. . .
Мультимедиа
hw_wired 28.01.2025
Введение в мультимедийные технологии В современном мире мультимедийные технологии стали неотъемлемой частью нашей жизни, проникнув во все сферы человеческой деятельности. Термин "мультимедиа". . .
Обработка текстовой информации
hw_wired 28.01.2025
Введение в обработку текстовой информации В современном мире обработка текстовой информации играет фундаментальную роль в различных сферах человеческой деятельности. Текстовые редакторы стали. . .
Обработка графической информации
hw_wired 28.01.2025
Введение в компьютерную графику Компьютерная графика стала неотъемлемой частью современного цифрового мира, пройдя впечатляющий путь развития от простейших черно-белых изображений до сложных. . .
Python в Алгоритмике: Решение задач
hw_wired 28.01.2025
Введение в Python и Алгоритмику В современном мире программирование стало неотъемлемой частью образования и профессионального развития. Python зарекомендовал себя как один из самых популярных и. . .
Компьютер как универсальное устройство для работы с информацией
hw_wired 28.01.2025
Введение в устройство компьютера Компьютер представляет собой универсальное электронное устройство, предназначенное для автоматической обработки информации. В современном мире компьютер стал. . .
Информация и информационные процессы
hw_wired 28.01.2025
Понятие информации и ее виды В современном мире информация является одним из фундаментальных понятий, пронизывающих все сферы человеческой деятельности. Под информацией понимают любые сведения об. . .
Алгоритмика
hw_wired 28.01.2025
Введение: Основы алгоритмики и её роль в информатике В современном мире программирование и алгоритмическое мышление стали неотъемлемой частью образования и профессиональной деятельности. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru