|
Назначение char8_t в С++20
|
|||
---|---|---|---|
#18+
В С++20 добавляется тип char8_t и это не псевдоним к char. Я что-то сообразить не могу, вот что можно было бы сказать таким кодом? Код: plaintext 1. 2.
Что значит такая перегрузка? Если std::u8string содержит utf-8 и, наверное, там заработает length(), то что тогда содержит std::string? UTF-8 everywhere or not? Ну и со Студией. Если файл в кодировке utf-8 without BOM, то такой код некорректный (в строке будет мусор): Код: plaintext 1.
Это что теперь файлы перекодировать? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2020, 17:53 |
|
Назначение char8_t в С++20
|
|||
---|---|---|---|
#18+
Одна из особенностей char8_t в том что он не алиасится с другими типами в отличие от char. Это дает возможность компилятору дополнительно оптимизировать код исключая повторное чтение памяти. Ну а что касается псевдонимов, то char8_t это отдельный тип, и не char и не unsigned char, хотя по сути это unsigned char. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2020, 18:23 |
|
Назначение char8_t в С++20
|
|||
---|---|---|---|
#18+
Подстелили соломку против ведроида с его неожиданным 16-ти разрядным char. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2020, 18:29 |
|
Назначение char8_t в С++20
|
|||
---|---|---|---|
#18+
petrav Ну и со Студией. Если файл в кодировке utf-8 without BOM, то такой код некорректный (в строке будет мусор): Код: plaintext 1.
Наверно баг. Странно что дало присвоить конст в неконст )) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2020, 18:32 |
|
Назначение char8_t в С++20
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Подстелили соломку против ведроида с его неожиданным 16-ти разрядным char. Вряд ли. По стандарту char равен 1 байту. На ARMe байт = 8 бит, так что не сходится. А реальная причина, это то что знаковость char не определена стандартом, и если он оказывается знаковым то с ним неудобно работать в контексте utf8. Еще одна причина, что теперь есть явное указание в типе что это utf8, и можно перегружать функции, как в первом сообщении. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2020, 18:40 |
|
Назначение char8_t в С++20
|
|||
---|---|---|---|
#18+
Anatoly Moskovsky petrav Ну и со Студией. Если файл в кодировке utf-8 without BOM, то такой код некорректный (в строке будет мусор): Код: plaintext 1.
Наверно баг. Странно что дало присвоить конст в неконст )) Стауструп писал, что он специально так сделал. Это исключение из правил. Потому что иначе был бы затруднён переход на С++ с Си. Память конечно read only. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2020, 18:46 |
|
Назначение char8_t в С++20
|
|||
---|---|---|---|
#18+
Anatoly Moskovsky Еще одна причина, что теперь есть явное указание в типе что это utf8, и можно перегружать функции, как в первом сообщении. Вот мой вопрос как раз про это! Зачем такая перегрузка если и в char*, и char8_t* у нас utf-8 ? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2020, 18:58 |
|
Назначение char8_t в С++20
|
|||
---|---|---|---|
#18+
Anatoly Moskovsky По стандарту char равен 1 байту. Я знаю несколько таргетов, где sizeof(char) == 2 или == 4 ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2020, 19:11 |
|
Назначение char8_t в С++20
|
|||
---|---|---|---|
#18+
petravВ С++20 добавляется тип char8_t и это не псевдоним к char. А ещё в C++11 добавились char16_t и char32_t. Комитет просто решил докончить картину: char16_t - type for UTF-16 character representation, required to be large enough to represent any UTF-16 code unit (16 bits). It has the same size, signedness, and alignment as std::uint_least16_t, but is a distinct type. char32_t - type for UTF-32 character representation, required to be large enough to represent any UTF-32 code unit (32 bits). It has the same size, signedness, and alignment as std::uint_least32_t, but is a distinct type. (since C++11) char8_t - type for UTF-8 character representation, required to be large enough to represent any UTF-8 code unit (8 bits). It has the same size, signedness, and alignment as unsigned char (and therefore, the same size and alignment as char and signed char), but is a distinct type. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2020, 19:13 |
|
Назначение char8_t в С++20
|
|||
---|---|---|---|
#18+
Aklin Anatoly Moskovsky По стандарту char равен 1 байту. Я знаю несколько таргетов, где sizeof(char) == 2 или == 4 Для сишечки(брал стандарт 17го года) раздел "The sizeof and _ Alignof operators" When sizeof is applied to an operand that has type char , unsigned char , or signed char , (or a qualified version thereof) the result is 1. Для плюсиков(брал стандарт 14го года) раздел "Sizeof" sizeof(char), sizeof(signed char) and sizeof(unsigned char) are 1. Таргеты нагло нарушающие стандарт хотелось бы узнать. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2020, 20:04 |
|
Назначение char8_t в С++20
|
|||
---|---|---|---|
#18+
petrav Anatoly Moskovsky пропущено... Наверно баг. Странно что дало присвоить конст в неконст )) Стауструп писал, что он специально так сделал. Это исключение из правил. Потому что иначе был бы затруднён переход на С++ с Си. Память конечно read only. Aklin Anatoly Moskovsky По стандарту char равен 1 байту. Я знаю несколько таргетов, где sizeof(char) == 2 или == 4 ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2020, 20:47 |
|
Назначение char8_t в С++20
|
|||
---|---|---|---|
#18+
petrav Стауструп писал, что он специально так сделал. Это исключение из правил. Потому что иначе был бы затруднён переход на С++ с Си. Память конечно read only. Исключение было для char. А char8_t это новый тип - ему исключений не надо, потому что нет легаси кода. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2020, 10:24 |
|
Назначение char8_t в С++20
|
|||
---|---|---|---|
#18+
Anatoly Moskovsky Исключение было для char. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2020, 11:42 |
|
Назначение char8_t в С++20
|
|||
---|---|---|---|
#18+
vAH_O6Vg Таргеты нагло нарушающие стандарт хотелось бы узнать. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.08.2020, 15:28 |
|
Назначение char8_t в С++20
|
|||
---|---|---|---|
#18+
По той ссылке прямо обратное написано, что sizeof(char)=1, а вот "байты" могут быть любого размера (8,16,32 бит в машинном слове). Если я правильно прочитал. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.08.2020, 15:37 |
|
Назначение char8_t в С++20
|
|||
---|---|---|---|
#18+
Aklin Как правильный помечен ответ с частой путаницей между байтом(минимальная совокупность битов, обрабатываемая одновременно) и октетом(8 бит). По стандарту C в char содержится CHAR_BIT бит и указано, что CHAR_BIT >= 8. Интересный левый факт: в стандарте POSIX CHAR_BIT == 8. Portable Operating System Interface менее Portable чем сишечка. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.08.2020, 17:17 |
|
|
start [/forum/topic.php?fid=57&msg=39985421&tid=2017368]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
33ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
53ms |
get tp. blocked users: |
2ms |
others: | 12ms |
total: | 144ms |
0 / 0 |