Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Программирование под Unix/Linux > wchar_t и кроссплатформенное программирование |
Автор: dfHunter 16.11.2009, 11:15 |
разрабатываю кроссплатформенное сетевое приложение дело в том, что протокол уже сформирован и сообщения передаются в UTF16 с виндой понятное дело проблем нет, но вот *nix системах wchar_t имеет размер 4 байта есть ли какие-нибудь либы для работы с 2 байтовым типом или какие то альтернативные решения сейчас как вариант вижу только добавление в пакет только 2 байтов из 4 для линукса, но возможно это не самый оптимальный способ(особенно для строк больших размеров), т.к. приложение очень требовательно к быстродействию |
Автор: null56 16.11.2009, 16:02 | ||
Изменение размера под линух этого типа данных связано с новой спецификацией юникода....
Если вопрос стоит в быстродействии, то не изобретай велосипед, ты работаешь с ютф16, значит всё у тебя умещается под виндовый и линуховый вариант. Работай также, как и под виндой... так будет более кроссплатформенно и по быстродействию куда быстрее, нежели отделение 2 байт из 4, каждый раз, когда читаешь символы... |
Автор: dfHunter 16.11.2009, 19:03 |
а каким образом я буду записывать её в буффер? если я попытаюсь целиком строку записать, то у меня получится что например строка GG запишется как 47 47 00 00 47 47 00 00 00 00 00 00 когда надо записать 47 47 47 47 00 00 я говорю о том, что прийдётся побайтово записывать только первые 2 из 4 байтов, что бы получить 2ой вариант в линуксе, когда в винде я мог бы просто воспользоваться memcpy для переноса строки в буффер |
Автор: Quartz 17.11.2009, 23:54 |
http://forum.vingrad.ru/forum/topic-249965/anchor-entry1805854/0.html |
Автор: dfHunter 18.11.2009, 00:36 | ||
спасибо |
Автор: dfHunter 18.11.2009, 18:59 |
появилась новая проблема функции для wchar_t все написаны для 32битного ну то есть wcslen возвращает не корректные значения а где взять для 16битного? |
Автор: null56 18.11.2009, 20:34 | ||
а stl тоже работает неправильно (std :: wstring)?
|