![]() |
Модераторы: xvr |
![]() ![]() ![]() |
|
dfHunter |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 16.11.2009 Репутация: нет Всего: нет |
разрабатываю кроссплатформенное сетевое приложение
дело в том, что протокол уже сформирован и сообщения передаются в UTF16 с виндой понятное дело проблем нет, но вот *nix системах wchar_t имеет размер 4 байта есть ли какие-нибудь либы для работы с 2 байтовым типом или какие то альтернативные решения сейчас как вариант вижу только добавление в пакет только 2 байтов из 4 для линукса, но возможно это не самый оптимальный способ(особенно для строк больших размеров), т.к. приложение очень требовательно к быстродействию |
|||
|
||||
null56 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 721 Регистрация: 19.3.2008 Репутация: 4 Всего: 12 |
Изменение размера под линух этого типа данных связано с новой спецификацией юникода....
Если вопрос стоит в быстродействии, то не изобретай велосипед, ты работаешь с ютф16, значит всё у тебя умещается под виндовый и линуховый вариант. Работай также, как и под виндой... так будет более кроссплатформенно и по быстродействию куда быстрее, нежели отделение 2 байт из 4, каждый раз, когда читаешь символы... |
|||
|
||||
dfHunter |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 16.11.2009 Репутация: нет Всего: нет |
а каким образом я буду записывать её в буффер?
если я попытаюсь целиком строку записать, то у меня получится что например строка GG запишется как 47 47 00 00 47 47 00 00 00 00 00 00 когда надо записать 47 47 47 47 00 00 я говорю о том, что прийдётся побайтово записывать только первые 2 из 4 байтов, что бы получить 2ой вариант в линуксе, когда в винде я мог бы просто воспользоваться memcpy для переноса строки в буффер |
|||
|
||||
Quartz |
|
|||
Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 28.6.2008 Репутация: нет Всего: 4 |
||||
|
||||
dfHunter |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 16.11.2009 Репутация: нет Всего: нет |
||||
|
||||
dfHunter |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 16.11.2009 Репутация: нет Всего: нет |
появилась новая проблема
функции для wchar_t все написаны для 32битного ну то есть wcslen возвращает не корректные значения а где взять для 16битного? |
|||
|
||||
null56 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 721 Регистрация: 19.3.2008 Репутация: 4 Всего: 12 |
а stl тоже работает неправильно (std :: wstring)?
Это сообщение отредактировал(а) null56 - 18.11.2009, 20:36 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С/С++: Программирование под Unix/Linux" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |