お世話になっております。
CAtlFileを使用して、ファイルの読み込みを行ったのですが、
GetSize関数で取得した長さをRead関数で指定したにも関わらず
ゴミらしきものが入っていました。
回避する方法はないのでしょうか?
CAtlFile cFile;
hRet = cFile.Create(tFileName, GENERIC_READ,FILE_SHARE_READ,OPEN_EXISTING);
if (! SUCCEEDED(hRet))
{
return 0;
}
cFile.GetSize(nFileLength);
cFile.Read(lpData,nFileLength);
// fileread.cpp: 己自身を読む
#include <atlfile.h>
#include <cassert>
#include <iostream>
int main() {
CAtlFile file;
HRESULT result = file.Create(readfile.cpp,
GENERIC_READ,FILE_SHARE_READ,OPEN_EXISTING);
assert( SUCCEEDED(result) );
ULONGLONG length;
file.GetSize(length);
char* buffer = new char[length+1];
file.Read(buffer, length);
buffer[length] = '\0';
std::cout << '[' << buffer << ']' << std::endl;
return 0;
}
…何の問題もありません。ゴミなんか付きません。
ひょっとして、'\0'で終端せずにprintしただけ?