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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
gromo
372 / 271 / 24
Регистрация: 04.09.2009
Сообщений: 1,214
#1

C++, UTF-8, char - C++

10.02.2014, 21:03. Просмотров 1448. Ответов 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)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.02.2014, 21:03
Здравствуйте! Я подобрал для вас темы с ответами на вопрос C++, UTF-8, char (C++):

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

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

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

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

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

(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const& - C++
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); ...

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

Цитата Сообщение от gromo Посмотреть сообщение
Почему на этом форуме никогда не дождешься помощи в вопросах о кодировках? Неужели это что-то сверхъестественное, или никому никогда не надо было писать программы на родных языках? Как зайдет речь о compile-time алгоритмах так все тут как тут
О, да, после таких выпадов желание что-то писать дальше отпадает напрочь.
1
gng
645 / 491 / 133
Регистрация: 08.09.2013
Сообщений: 1,326
10.02.2014, 22:33 #3
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от 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
gromo
10.02.2014, 22:54  [ТС]     C++, UTF-8, char
  #4

Не по теме:

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

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.02.2014, 22:54
Привет! Вот еще темы с ответами:

Error C2664: sprintf: невозможно преобразовать параметр 1 из 'const char *' в 'char *' - C++
error C2664: sprintf: невозможно преобразовать параметр 1 из 'const char *' в 'char *' void crpost(const statep &amp;struc1) { ...

Ошибка в cannot convert char * to char вроде поправил теперь выводит ересь( - C++
Всем доброго дня! У меня такая проблемка.... написал программу, но сначала она ругалась на Cannot convert char* to char теперь вроде...

array char* to char* (значения массива указателей в один указатель) - C++
Как сложить(или вывести в формате char*) все значения массива указателей(char *) воедино, то есть сложить строки и назначить результату...

Ошибка: initializing argument 2 of `char* fgets(char*, int, FILE*) - C++
Написать программу, которая считывает текст из файла и выводит на экран только строки, содержащие двузначные числа Помогите...


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

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

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