读取文件内容时,显示的内容明显少于文本长度

最近在读取html文件的内容时,遇到问题:

数据的长度明明很大,但读取的char*数据只显示几个字节,转换为wstring后,也是只显示几个字节。

在研究内存之后,发现是因为数据中存在 字符,char*,CString等在遇到 时就会丢弃后面的数据。

//读取文件内容:

HANDLE hFile = CreateFile(szFilePath,GENERIC_READ,FILE_SHARE_READ|FILE_SHARE_WRITE, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,0);
if (hFile == INVALID_HANDLE_VALUE)
{
LOG_ERROR(L"判断简历文件:读取文件内容出错(%d)", GetLastError());
return false;
}
DWORD dwFileSize = GetFileSize(hFile,0);
char* buffer = new char[dwFileSize];
::SetFilePointer(hFile,0, NULL, FILE_BEGIN);
DWORD dwRead = 0;
BOOL filesucc=::ReadFile(hFile,buffer,dwFileSize, &dwRead, NULL);
if(filesucc==0)
{
LOG_ERROR(L"判断简历文件:读取文件内容出错(%d)", GetLastError());
return false;
}
CloseHandle(hFile);

char * pchar = replaceAll(buffer, '', ' ', rtnLength );//CString assign等遇到会丢弃后面的数据

replaceAll定义如下:

char * replaceAll(char * src,char oldChar,char newChar, int length)
{
char * head=src;
int i = 0;
while(i < length/**src!=''*/)
{
if(*src==oldChar)
*src=newChar;
src++;
i ++;
}
return head;
}

原文地址:https://www.cnblogs.com/pjl1119/p/6906661.html