Форум программистов, компьютерный форум CyberForum.ru

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

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

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

10.02.2014, 21:03. Просмотров 1263. Ответов 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 алгоритмах так все тут как тут

Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.02.2014, 21:03     C++, UTF-8, char
Посмотрите здесь:

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 на С++), так как все мои программы занимаются обработкой строк то решил сначала разобраться со...

Разница между new char[] и new char[]() - C++
Доброго времени суток. Подскажите пожалуйста разницу, между следующим кодом: char* ch = new char; и char* ch = new...

Невозможно преобразовать char* в char - C++
Как исправить ошибку?

В чем отличие char* s от char *s - C++
В чем отличие char* str; от char *str; ?

Аргумент типа char** не совместим с параметром типа const char* - C++
Программа должна позволять заносить в структуру данные и выводить на экран информацию о поездах, следующих до определенной станции: ...

написать програму void(char source[] ,char dest[]) которая скопирует все символы из source[] ,которые не принадлежат алфавиту , в dest[]. - C++
написать програму void(char source ,char dest) которая скопирует все символы из source ,которые не принадлежат алфавиту , в dest.выводить...

Argument of type char is incompatible with parameter of type char * - C++
Столкнулся с ошибкой, не получается никак исправить #define DUTIES 100 class POSITIONDLL_API Position { private: char...

Ошибка: "invalid conversion from char* to char" - C++
Граждане,товарищи изучаю C++ и зациклился на проблеме,мне надо подсчитать количество букв в массиве введённом с клавиатуры#include...


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

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

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

Не по теме:

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

Yandex
Объявления
10.02.2014, 22:54     C++, UTF-8, char
Ответ Создать тему
Опции темы

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