char* decodedChar;
decodedChar = new char[decodedData.size() +1]; // +1 for the final 0
Зачем вам вручную выделять буфер, а затем копировать в него, если у вас есть std::string
, которое сделает это за вас?
Просто сделайте:
std::string encodedData = "VGVzdFN0cmluZw=="; //"TestString"
std::vector<BYTE> decodedData = base64_decode(encodedData);
std::string decodedString { decodedData.begin(), decodedData.end() };
std::cout << decodedString << '\n';
Если вам нужно char *
из этого, просто используйте .c_str()
const char* cstr = decodedString.c_str();
Если вам нужно передать это функции, которая принимает char*
в качестве входных данных, например:
void someFunc(char* data);
//...
//call site
someFunc( &decodedString[0] );
У нас есть ТОННА функций, абстракций и контейнеров на C ++, которые были созданы для улучшения языка C, чтобы программистам не приходилось писать что-то вручную и делать одни и те же ошибки каждый раз, когда они кодируют. Было бы лучше, если бы мы использовали эти функции везде, где это возможно, чтобы избежать сырых циклов или сделать такие простые модификации, как это.