Да, это возможно, потому что это C ++, и все возможно в C ++.
Сначала вот как вы это делаете, затем я отвечу на вопрос почему вам может нужно это сделать:
std::ifstream input( "my.png", std::ios::binary );
std::vector<unsigned char> buffer(std::istreambuf_iterator<char>(input), {});
int buffSize = buffer.size();
std::string myString(buffer.begin(), buffer.end());
В моем случае я использовал каркас, в котором HTTP-клиент поддерживал только строку для тела сообщения, но мне нужно было отправить необработанный двоичный файл в службу, которую я использовал.Я мог бы либо возиться с внутренностями библиотеки (плохо), либо ввести другую ненужную зависимость для простой записи в файле (тоже не очень хорошо).
Но поскольку строки могут содержать эти данныеЯ смог прочитать файл, скопировать его в строку и затем загрузить.
Это прискорбная ситуация, так или иначе, но в некоторых случаях полезно это делать.Обычно вы хотите сделать что-то другое.Это не самый понятный для чтения кто-то другой, и у вас будут некоторые потери производительности из копии, но это работает;и это помогает понять, почему это работает.std::string
сохраняет данные внутренне непрерывно в двоичном формате, как это делает вектор, и может быть инициализирован с помощью итераторов в векторе.
unsigned char
имеет длину в один байт, поэтому он равен значению byte
.Строка копирует байты в себя, поэтому вы получите точные данные.