powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Какой тип использовать для строки?
5 сообщений из 5, страница 1 из 1
Какой тип использовать для строки?
    #39638582
svcoder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Давно не писал на С++, а тут потребовалось написать компоненту работающую как в 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
...
Рейтинг: 0 / 0
Какой тип использовать для строки?
    #39638584
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svcoderнаткнулся на много статей, что wchar_t не подходит для кроссплатформенной разработки и
вообще для Unicode.

Всерьёз считаешь, что миллион леммингов не могут ошибаться?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Какой тип использовать для строки?
    #39638607
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svcoder,

не используй индексный оператор, для кодовых страниц, где чар бывает >2
...
Рейтинг: 0 / 0
Какой тип использовать для строки?
    #39638656
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В кодировке UTF-8 проблема отсутствует
...
Рейтинг: 0 / 0
Какой тип использовать для строки?
    #39639207
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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

Ну, если нужны продвинутые функции работы с интернациональным текстом, то только так.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Какой тип использовать для строки?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]