wstringstream wss;
wifstream wif(basePath, ios::binary);
if (wif.is_open()) {
wss << wif.rdbuf();
wif.close();
}wofstream wof(tempFileName, ios::binary);
if (wof.is_open()) {
wof << wss.str().data();
wof.close();
}
wss.str().data() - это ты взял строковое представление данных и просто записал его в другой файл.
Не понял суть вопроса
std, ты себе яму роешь.std::wstringstream - это не тот тип, что нужен тебе. Это объект абстракции над текстовым файлом с "широкой" кодировкой. Такой стрим оперирует строками с типом std::wstring.std::basic_fstream. Это то, что тебе нужно.wof << wss.str().data(); - стоит забыть про operator <<.
std: 1, 2.Чтобы гуглить, нужно знать о чём гуглить, а тут проблема.
wifstream wif(tempName, ios::binary);
if (wif.is_open()) {
wif.seekg(0, wif.end);
size_t size = (size_t)wif.tellg();
wif.seekg(0, wif.beg);
wchar_t* encryptedData = new wchar_t[size];
wif.get(encryptedData, size);
wif.close();
delete[] encryptedData;
}
wfstream wif(L"logs.dat", ios::binary | ios::in);
if (wif.is_open()) {
wif.seekg(0, wif.end);
size_t size = (size_t)wif.tellg();
wif.seekg(0, wif.beg);
wchar_t* encryptedData = new wchar_t[size];
ZeroMemory(encryptedData, size);
wif.read(encryptedData, size);
wif.close();
wofstream wof(L"temp.dat", ios::binary);
if (wof.is_open()) {
wof.write(encryptedData, size);
wof.close();
}
delete[] encryptedData;
}wchar_t* encryptedData = new wchar_t[size];std::vector. Еще тебе совершенно не нужен wchat_t для работы с бинарным файлом. Лучше будет взять std::byte, если тебе доступен C++17, или uint8_t. Т.е. буферы будет лучше из однобайтовых составить.ZeroMemory(encryptedData, size) занулит только size байт, а не элементов, т.е. он пройдет только половину твоего текущего буфера.wif.read(encryptedData, size) - тоже воспользуется лишь половиной буфера, т.к. зачитает size байт, а не size двубайтовых.
wfstream?wchar_t передавать.std::basic_stream со своим конструктором от широкой строки.std::basic_stream говорит о том, в каких элементах следует интерпретировать тело файла.