实现以下代码功能:
HANDLE hFile=CreateFile("aa.txt",GENERIC_READ,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
if(hFile==INVALID_HANDLE_VALUE)
{
return FALSE;
}
DWORD dwSize=GetFileSize(hFile,NULL);
DWORD dwReaded;
CString strContent;
LPSTR lpszContent=strContent.GetBufferSetLength(dwSize);
if(!ReadFile(hFile,lpszContent,dwSize,&dwReaded,NULL) || dwReaded!=dwSize)
{
return FALSE;
}
CloseHandle(hFile);
要求:
必须一次性读完整个文件,不要一个字符一个字符、一个单词一个单词或是一行一行地读,不许有循环。以下代码不要:
ostringstream osContent;
ifstream inFile("aa.txt");
if(!inFile)
{
return -1;
}
char ch;
while(inFile.get(ch))
cout.put(ch); string strContent=osContent.str();达到有求立即给100分。

解决方案 »

  1.   

    STL读文件?你是说用STL的Stream Classes来读写文件,顾名思义(Stream)本来就处理流设备,哪而来的“块操作”。STL又不是os API,对文件的输入、输出还不是利用API来完成,只不过把这种操作封装成了流的相对标准的接口。直接用API不就行了。或者我孤陋寡闻了
      

  2.   

    因为小弟前些日子找到boost的正则表达式类,希望可以使用正则表达式来处理字符串。但是想到如果必须先用API读出文件,再复制到string中去,最后进行正则表达式处理,整个过程比较浪费内存(特别当文件比较大时),效率未免太低。因此希望找到一个比较好的的方法。