C ++ Преобразование байтового массива UTF в строку - PullRequest
0 голосов
/ 03 января 2012

Я занимаюсь разработкой сервера C # и клиента C ++. Клиент C ++ отправляет некоторые строки Unicode на сервер. Хорошо. У меня есть строковый объект и я использую функцию data (), чтобы получить байтовый массив и отправить его через сокет на сервер c #. Это все хорошо. Сервер получает сообщение правильно. Проблема с получением. Я получаю байты с сервера c #, однако мне нужен способ «преобразовать» байты в соответствующую строку Unicode.

Я пытался создать объект с широкой строкой:

wstring str = wstring((wchar_t *) buff);

и извлеките строку с помощью функции c_str (), но строка результата не является строкой, отправляемой сервером !!

Где бафф - это байтовый массив (массив без знака), который я получаю из сокета.

Любая помощь будет оценена !!!

1 Ответ

3 голосов
/ 03 января 2012

Вот как я бы попытался решить эту проблему:

  1. Начните с сервера. Проверьте данные для отправки. Это то, что вы ожидаете?
  2. Теперь соединение. Запустите Wireshark и проверьте фактические данные, отправленные через Ethernet. Это то, что вы ожидаете?
  3. На стороне клиента проверьте буфер. Это то, что вы ожидаете?
  4. На стороне клиента проверьте строку wstring. Это то, что вы ожидаете?

Начните с известного объекта (данные отправляются с сервера) и проверяйте его на каждом этапе, чтобы увидеть, где он перестает быть тем, чем вы ожидаете. Это скажет вам, где ваша ошибка. Если вы знаете, что, если у вас все еще есть проблемы, опубликуйте подробную информацию о месте с ошибкой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...