Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/25: Рейтинг темы: голосов - 25, средняя оценка - 4.60
 Аватар для gromo
383 / 281 / 31
Регистрация: 04.09.2009
Сообщений: 1,225

C++, UTF-8, char

10.02.2014, 21:03. Показов 4758. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Приветсвую всех. Правильно ли я рассуждаю:

1) Если мне нужно использовать символы юникода в программе (самые немыслимые иероглифы, кириллицу), то их можно засовывать в строку char* или std::string, только если у меня исходники лежат в UTF-8, a отдельные символы этой строки можно сохранять только в широких переменных (char16_t, char32_t, wchar_t)?

2) То что С++11 стал поддерживает юникод, это значит, что появились фундаментальные типы char16_t char32_t, и они для того, чтобы можно было представлять юникод (в виде '\xFFFFFFFF') в файлах исходного кода, которые НЕ в юникодной кодировке?

Добавлено через 3 часа 10 минут

Не по теме:

Почему на этом форуме никогда не дождешься помощи в вопросах о кодировках? Неужели это что-то сверхъестественное, или никому никогда не надо было писать программы на родных языках? Как зайдет речь о compile-time алгоритмах так все тут как тут :(

0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
10.02.2014, 21:03
Ответы с готовыми решениями:

Char *(UTF-8) -> char *(ANSI)
Есть строка в кодировке UTF-8(если не ошибаюсь) типа char * Вот так ее я вижу в MSVC++10 - комментарии(оригинал - комментарии)...

UTF-8 - русские символы в char посимвольно
Здравствуйте, в проекте используется UTF-8, и в char и в string я не могу обратиться к русскому символу, как к элементу массива, т.к. в...

масив Char (Windows-1251, ASCII, UTF-8)
Перехожу с мелкомяхких на linux (с Delphi на С++), так как все мои программы занимаются обработкой строк то решил сначала разобраться со...

3
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
10.02.2014, 22:32
Цитата Сообщение от gromo Посмотреть сообщение
Если мне нужно использовать символы юникода в программе (самые немыслимые иероглифы, кириллицу), то их можно засовывать в строку char* или std::string, только если у меня исходники лежат в UTF-8, a отдельные символы этой строки можно сохранять только в широких переменных (char16_t, char32_t, wchar_t)?
UTF-8 прекрасно хранится в char/string, без каких-либо оговорок.
Только нужно помнить, что, к примеру, string.length будет возвращать
количество байт, а не символов, а это в некоторых случаях важно.

Цитата Сообщение от gromo Посмотреть сообщение
Почему на этом форуме никогда не дождешься помощи в вопросах о кодировках? Неужели это что-то сверхъестественное, или никому никогда не надо было писать программы на родных языках? Как зайдет речь о compile-time алгоритмах так все тут как тут
О, да, после таких выпадов желание что-то писать дальше отпадает напрочь.
1
923 / 639 / 198
Регистрация: 08.09.2013
Сообщений: 1,693
10.02.2014, 22:33
Лучший ответ Сообщение было отмечено gromo как решение

Решение

Цитата Сообщение от gromo Посмотреть сообщение
1) Если мне нужно использовать символы юникода в программе (самые немыслимые иероглифы, кириллицу), то их можно засовывать в строку char* или std::string, только если у меня исходники лежат в UTF-8, a отдельные символы этой строки можно сохранять только в широких переменных (char16_t, char32_t, wchar_t)?
Да. Литералы будут отображаться ожидаемо, если файл исходника имеет соотверствующую кодировку.
Кажды символ utf-8 можно хранить, например, в восьмибайтном целом типе (long long). Символ в utf-8 занимает от 1 до 6 байт. Для русских букв достаточно short (или, если хотите, char16_t, хотя он для этого не предназначен).
Цитата Сообщение от gromo Посмотреть сообщение
2) То что С++11 стал поддерживает юникод, это значит, что появились фундаментальные типы char16_t char32_t, и они для того, чтобы можно было представлять юникод (в виде '\xFFFFFFFF') в файлах исходного кода, которые НЕ в юникодной кодировке?
char16_t и char32_t были введены для символов utf-16 и utf-32.
В виде '\xFFFFFFFF' можно представлять и их, и любые целые значения в файлах (почти) любой кодировки.
1
10.02.2014, 22:54  [ТС]

Не по теме:

Цитата Сообщение от Убежденный Посмотреть сообщение
О, да, после таких выпадов желание что-то писать дальше отпадает напрочь.
Извините, нервы не впорядке :pardon:

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.02.2014, 22:54
Помогаю со студенческими работами здесь

Конвертация из ASCII в UTF-32 или UTF-8 в UTF-32
Собсно сабж.

Char unsigned char signed char длинна Кааак
Здравствуйте. char l = {0,0}; l = 0xff; Почему, меня, компилятор не посылает куда подальше. Нет он конечно...

Ошибка: "char *concat(char *,.)": невозможно преобразовать аргумент 1 из "const char [4]" в "char *"
делал задание, но на строке 36 строке пишет, что "char *concat(char *,...)": невозможно преобразовать аргумент 1 из "const char "...

Преобразовние Utf-16 <=> Utf-8
Вопрос казалось бы простой, но нормально ответа на него я пока не нашел. Нужно вывести строчку юникода(UTF-16) в файл с изменением...

(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&
astxx::manager::connection::connection(std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; const&amp;, unsigned short); ...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru