Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Есть ли в С++ аналог функции Encoding.UTF8.GetBytes(plainText) из С#?
|
|||
|---|---|---|---|
|
#18+
Здравствуйте уважаемые ГУРУ! Переписываю свой код из С# на С++ Необходимо строку типа string перевести в vector<unsigned char> Но загвоздка в том, что строка всегда содержи и латинские символы и кирилицу и в vector идет однобайтовое представление символа кирилицы Каким образом в С++ можно записать в vector кирилицу в двубайтной кодировке? в С# я делал следующее (штатная функция): Код: c# 1. 2. и в окне отладке я получал нужный мне результат: - plainTextBytes {byte[24]} byte[] [0] 70 byte [1] 105 byte [2] 114 byte [3] 115 byte [4] 116 byte [5] 78 byte [6] 97 byte [7] 109 byte [8] 101 byte [9] 61 byte [10] 208 byte Это пошла кирилица в двубайтной кодировке [11] 157 byte [12] 208 byte [13] 184 byte [14] 208 byte [15] 186 byte [16] 208 byte [17] 190 byte [18] 208 byte [19] 187 byte [20] 208 byte [21] 176 byte [22] 208 byte [23] 185 byte В с++ я делаю следующее Код: plaintext 1. 2. В окне отладки: - plainTextBytes { size=17 } std::vector<unsigned char,std::allocator<unsigned char> > [size] 17 int [capacity] 17 int [0] 70 'F' unsigned char [1] 105 'i' unsigned char [2] 114 'r' unsigned char [3] 115 's' unsigned char [4] 116 't' unsigned char [5] 78 'N' unsigned char [6] 97 'a' unsigned char [7] 109 'm' unsigned char [8] 101 'e' unsigned char [9] 61 '=' unsigned char [10] 205 'Н' unsigned char Кирилица в однобайтовой кодировке [11] 232 'и' unsigned char [12] 234 'к' unsigned char [13] 238 'о' unsigned char [14] 235 'л' unsigned char [15] 224 'а' unsigned char [16] 233 'й' unsigned char Мое гугление ничего конкретного кроме WideCharToMultiByte , не выдало. А с параметрами этой функции я что-то притупил... Может есть еще что-то штатное как в С#? Заранее благодарен всем откликнувшимся ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2016, 19:34 |
|
||
|
Есть ли в С++ аналог функции Encoding.UTF8.GetBytes(plainText) из С#?
|
|||
|---|---|---|---|
|
#18+
ArbitМое гугление ничего конкретного кроме *WideCharToMultiByte*, не выдало. А с параметрами этой функции я что-то притупил... А где там тупить-то? Всё просто как два рубля. Но раз у тебя строка в какой-то однобайтной кодировке, то придётся использовать связку MultibyteToWideChar() + WideCharToMultibyte() чтобы преобразовать сначала в юникод, а потом - в utf-8. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2016, 19:53 |
|
||
|
Есть ли в С++ аналог функции Encoding.UTF8.GetBytes(plainText) из С#?
|
|||
|---|---|---|---|
|
#18+
Переписываю свой код из С# на С++ Необходимо строку типа string перевести в vector<unsigned char> такая функция как ты хочешь просто нафиг не нужна в с++... Но загвоздка в том, что строка всегда содержи и латинские символы и кирилицу и в vector идет однобайтовое представление символа кирилицы в vector идет ровно то, что ты туда положешь , так что все вопросы к тебе.... Каким образом в С++ можно записать в vector кирилицу в двубайтной кодировке? utf8 нифига не двубайтовая кодировка ... а теперь главный вопрос: в какой кодировке у тебя данные в std::string? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2016, 20:36 |
|
||
|
Есть ли в С++ аналог функции Encoding.UTF8.GetBytes(plainText) из С#?
|
|||
|---|---|---|---|
|
#18+
MasterZiv, Спасибо за информацию. Строка будет приходить из С# а там кодировка utf16 затем к этой строке добавятся данные из кода С++ и далее на шифрование и на сервер ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2016, 21:14 |
|
||
|
Есть ли в С++ аналог функции Encoding.UTF8.GetBytes(plainText) из С#?
|
|||
|---|---|---|---|
|
#18+
ArbitСтрока будет приходить из С# а там кодировка utf16 байтовый массив в UTF-8 из c# будет проще принять иначе - тот самый Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2016, 22:00 |
|
||
|
Есть ли в С++ аналог функции Encoding.UTF8.GetBytes(plainText) из С#?
|
|||
|---|---|---|---|
|
#18+
Изопропил, ты у меня как ангел-хранитьель :) Спасибо! Поскольку ты в теме моей истории - мне строку из шарпа (именно там кирилица) нужно будет соединить с данными WMI (что мы обсуждали ранее), а там строка bstr_t. И конечную строку нужно загнать в vector<unsignet char> для дальнейшей шифровки. И кодировка символов в vector должна быть уже utf8 Как лучше слепить строку из шарпа со строкой bstr_t а может как ты советуешь отправить из шарпа массив в уже готовой кодировке, а потом добавить к нему символы из строки bstr_t? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2016, 23:06 |
|
||
|
Есть ли в С++ аналог функции Encoding.UTF8.GetBytes(plainText) из С#?
|
|||
|---|---|---|---|
|
#18+
Arbitа потом добавить к нему символы из строки bstr_t? если обе строки bstr_t - их проще склеить в c++ ну а дальше - Код: plaintext 1. 2. 3. 4. примечание - строки без нулевого терминатора ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2016, 01:51 |
|
||
|
Есть ли в С++ аналог функции Encoding.UTF8.GetBytes(plainText) из С#?
|
|||
|---|---|---|---|
|
#18+
ArbitMasterZiv, Спасибо за информацию. Строка будет приходить из С# а там кодировка utf16 затем к этой строке добавятся данные из кода С++ и далее на шифрование и на сервер utf-16, на сколько я знаю, в std::string не влазит уже.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2016, 01:57 |
|
||
|
Есть ли в С++ аналог функции Encoding.UTF8.GetBytes(plainText) из С#?
|
|||
|---|---|---|---|
|
#18+
MasterZiv, BSTR (_bstr_t) на входе у топикстартера, хотя он и пишет "строку типа string" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2016, 09:22 |
|
||
|
Есть ли в С++ аналог функции Encoding.UTF8.GetBytes(plainText) из С#?
|
|||
|---|---|---|---|
|
#18+
Изопропил, спасибо большое, ты как всегда в яблочко! :) Твои рекомендации самые лаконичные и результативные и что ОЧЕНЬ ПРИЯТНО - без "пальцев веером" РЕСПЕКТ! Очередной вопрос закрыт. У меня скоро еще будет 2 вопроса. Но это уже не по теме топика - где тебя искать? Если я открою новую тему, ведь не факт что ты ее увидишь? Или открыть тему и кинуть тебе ссылку на нее? А куда кидать ссылку? В общем хочу с тобой дружить :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2016, 16:57 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=39350103&tid=2018383]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
57ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
| others: | 271ms |
| total: | 422ms |

| 0 / 0 |
