хорошо, использовал другой ответ, чтобы каким-то образом обойти мою проблему:
int main()
{
HLib::_ErrorSaveStruct Ess = {0}; // just a namespace
Ess.IsUNICODE = true;
Ess.errState = 100;
Ess.ItemCount = 9999;
wchar_t* StringTest[1] = {L"WOORD"}; // same like (wchar_t[5])
FILE* iobuf = NULL;
// create new in binary read-write mode
if (_wfopen_s(&iobuf,L"WTest.err",L"wb+")==0)
{
//WRITING BLOCK
if (fwrite(&Ess,sizeof(Ess),1,iobuf) != 1) // sizeof_ErrorSaveStruct
std::cout << "Fail (Reading struct)";
if (fwrite(StringTest,sizeof(wchar_t) * 5,1,iobuf) != 1) // size = 5
std::cout << "Fail (Reading string)";
// reset content
SecureZeroMemory(&Ess,sizeof(Ess));
SecureZeroMemory(StringTest,sizeof(wchar_t)*5);
fseek(iobuf,0,0); // rewind
fflush(iobuf); // flush because you switch from write to read
/// READING BLOCK
if (fread(&Ess,sizeof(Ess),1,iobuf) != 1) // sizeof_ErrorSaveStruct
std::cout << "Fail (Reading struct)";
if (fread(StringTest,sizeof(wchar_t) * 5,1,iobuf) != 1) // size = 5
std::cout << "Fail (Reading string)";
fclose(iobuf);
}
return 0;
Я действительно кое-что узнал о потоках и файловом IO. Думая о других решениях, я также мог бы передать отдельные параметры (int, bool) в wfstream вместо всей структуры. также было бы возможно использовать std :: fstream с установленным двоичным флагом и передавать строку wchar_t через write (). Во всяком случае, это решение работает достаточно хорошо для меня, и я очень рад этому.