Is it valid, to use std::string to hold binary data, to avoid manual dynamic memory management
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).