Можно только добавить определенное количество символов в строку - C ++ - PullRequest
0 голосов
/ 01 ноября 2018

Я создаю приложение на сокете в c ++, где мне нужно декодировать строки base64. Для этого я использую код Рене Ниффенегера (https://renenyffenegger.ch/notes/development/Base64/Encoding-and-decoding-base-64-with-cpp)). Строка ret из функции base64_decode, которую я обнаружил, всегда имеет длину всего 4 символа, и после того, как я потратил некоторое время на отладку, я понял, все сводится к этому:

unsigned char1 = 255;
unsigned char2 = 216;
unsigned char3 = 255;
unsigned char4 = 224;
unsigned char5 = 0;
unsigned char6 = 16;
unsigned char7 = 74;
unsigned char8 = 70;
unsigned char9 = 73;
string str;
str += char1;
str += char2;
str += char3;
str += char4;
str += char5;
str += char6;
str += char7;
str += char8;
str += char9;

По какой-то причине этот код добавляет только char1, char2, char3 и char4 к str, а остальные символы полностью игнорируются. Почему это так и что я могу сделать, чтобы это исправить?

1 Ответ

0 голосов
/ 01 ноября 2018

Может ли проблема быть 0 в char5? Строки C завершаются нулем, поэтому, если ваша строка преобразуется в строку C, я предполагаю, что она будет обрезана в этой точке.

Обратите внимание, что это проблема C, а не C ++, но в вашем случае может быть момент, когда происходит такое преобразование.

...