Возможно, исполняемый файл имеет число 0 байтов (т. Е. 0x00
) в начале файла. Когда вы делаете sFile = buffer;
, предполагается, что buffer
- это строка в стиле C, которая заканчивается 0 байтом. Так что sFile
будет содержать только байты до этой точки.
Чтобы исправить это, вы должны поместить весь буфер в строку:
std::wstring sFile(buffer, length); // Directly using the constructor, or
sFile.assign(buffer, length); // after construction