Pay attention to base64_decode
in http://www.adp-gmbh.ch/cpp/common/base64.html
std::string base64_decode(std::string const& encoded_string)
I dont think one should use std::string for byte-data-storage. The method provide aren't design to deal with byte-data and you will risk yourself since any changes (or "optimization") on std::string will break your code.
You need an array of character( not string) to store the binary data. Best is use vector.
I don't think it's completely valid.
Care must be taken with string and binary data because it uses internally char type and char depends in the implementation if it is defined as unsigned or signed type. I prefer to use basic_string<unsigned char>
and be sure of what i'm reading.
Yes, you can store any sequence of char
in a std::string
. That includes any binary data.
Yes. std::string can hold any char value ('\0'
has no special meaning). However I wouldn't be surprised finding some C++ functions (e.g. from external libraries) having problems with strings with embedded NULs.
Anyway I don't understand what you are going to gain with an std::string
instead of std::vector<unsigned char>
that would make your intentions more clear and that offers more guarantees (e.g. that all the bytes are in contiguous not-shared memory so that you can pass &x[0]
to someone expecting a plain buffer for direct access).