Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Какой тип использовать для строки?
|
|||
|---|---|---|---|
|
#18+
Давно не писал на С++, а тут потребовалось написать компоненту работающую как в Windows (32/64), так и в Linux (34/64). Изначально я планировал использовать тип wstring, использующий wchar_t в качестве символа, но наткнулся на много статей, что wchar_t не подходит для кроссплатформенной разработки и вообще для Unicode. Да, я в курсе что в VC и GCC размер этого типа отличается, но я всегда считал, что wchar_t был введен чтобы абстрагироваться от того, что один символ занимает 1 байт и функция wcslen вернет правильное количество символов, если допустим один из них занимает 4 байта вместо двух. Но тогда должен был быть запрещен индексный оператор для типа wstring, а он разрешен. Какого подхода стоит придерживаться? 1. Забить на то, что некоторые символы могут не поместиться в wchar_t (не предполагается что компонента будет использоваться в странах с иероглифами) 2. Использовать новый тип char32_t и где-то искать реализацию стандартных функций для этого типа 3. Начать использовать ICU и его тип UChar32 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2018, 20:55 |
|
||
|
Какой тип использовать для строки?
|
|||
|---|---|---|---|
|
#18+
svcoderнаткнулся на много статей, что wchar_t не подходит для кроссплатформенной разработки и вообще для Unicode. Всерьёз считаешь, что миллион леммингов не могут ошибаться?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2018, 21:01 |
|
||
|
Какой тип использовать для строки?
|
|||
|---|---|---|---|
|
#18+
svcoder, не используй индексный оператор, для кодовых страниц, где чар бывает >2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.05.2018, 00:56 |
|
||
|
Какой тип использовать для строки?
|
|||
|---|---|---|---|
|
#18+
В кодировке UTF-8 проблема отсутствует ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.05.2018, 12:18 |
|
||
|
Какой тип использовать для строки?
|
|||
|---|---|---|---|
|
#18+
svcoderДавно не писал на С++, а тут потребовалось написать компоненту работающую как в Windows (32/64), так и в Linux (34/64). Изначально я планировал использовать тип wstring, использующий wchar_t в качестве символа, но наткнулся на много статей, что wchar_t не подходит для кроссплатформенной разработки и вообще для Unicode. Всё немного ровно наоборот. Но статьи такие могут быть, и они вполне корректны, и вся проблема в том, что Шиндошс остановился с какого-то перепуга на UCS-16 (на самом деле его компиляторы), а Linux скакнул сразу на UCS-32 Если тебе не нужны китайские и японские иероглифы, что почти наверняка, то ты можешь вполне хорошо жить и на wchar_t (кроссплатформенно). Подход, нужный тебе, никто кроме тебя не выберет, поскольку только ты знаешь требования к твоему софту. 1. Забить на то, что некоторые символы могут не поместиться в wchar_t Ну, вариант, причём самый простой и понятный. 2. Использовать новый тип char32_t и где-то искать реализацию стандартных функций для этого типа Искать ничего не надо, достаточно написать один typedef на std::basic_string<char32_t> 3. Начать использовать ICU и его тип UChar32 Ну, если нужны продвинутые функции работы с интернациональным текстом, то только так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2018, 10:09 |
|
||
|
|

start [/forum/topic.php?fid=57&fpage=19&tid=2017871]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
31ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
2ms |
| others: | 13ms |
| total: | 137ms |

| 0 / 0 |
