パフォーマンス上の理由から、fstream を 1 回だけ使用したくはありませんでした。単純な char 配列の代わりにstd::stringで WinAPI 関数を使用するのは非常に悪い考えのようです。全体として、次のスニペットが機能しない理由 (空の stBuffer が空のままである) と、それを修正するために必要なことを教えてください。
前もって感謝します!
std::size_t Get(const std::string &stFileName, std::string &stBuffer)
{
HANDLE hFile = ::CreateFileA(stFileName.c_str(), GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
DWORD dwBytesRead = 0;
if(hFile != INVALID_HANDLE_VALUE)
{
DWORD dwFileSize = ::GetFileSize(hFile, NULL);
stBuffer.reserve(dwFileSize + 1);
::ReadFile(hFile, &stBuffer[0], dwFileSize, &dwBytesRead, NULL);
stBuffer[dwFileSize] = '\0';
::CloseHandle(hFile);
}
return dwBytesRead;
}