文件在缓存中操作

	wcout.imbue(locale("chs"));
	clock_t start,end;
	start = clock();
	CFile m_curFile(_T("c:\\design2.dxf"),CFile::modeRead);
	UINT uFileSize = (UINT)m_curFile.GetLength();
	char* istrBuffer = new char[uFileSize];		//输入缓冲区
	char* ostrBuffer = new char[uFileSize];		//输出缓冲区
	
	m_curFile.Read(istrBuffer,uFileSize);		//读取文件到字符缓冲区
	m_curFile.Close();

	memcpy(ostrBuffer,istrBuffer,uFileSize);	//拷贝输出缓冲区

	//可以用下面两行注释代码,来替代17,18,不过需要多创建一个string对象
	//string str(strBuffer);
	//std::istringstream instr(str);
	istringstream instr;
	instr.str(istrBuffer);				//生成字符串输入流对象
	
	char tmp [80] ={0};
	int index = 0;					//统计当前行
	int num=0;
	while(!instr.eof())
	{
		memset(tmp,0,80*sizeof(char));
		instr.getline(tmp,80);			//获取新行
		/*cout <<"Row "<<++index<<"is:"<<tmp <<endl;*/
		/*if((++index) % 10000==0)
			cout << "." ;*/
		if (instr.fail())			//如果读取失败,比如字符串超过80(这里假定有用的数据不会超过80)
		{
			instr.clear();			//清除错误标识
			instr.ignore(80,'\n');		//忽略超过80的剩余行数
		}
		if (strcmp(tmp,"EOF")==0)		//如果没有结束(dxf文件以EOF字符串结束)
			break;
	}
	end = clock();
	cout << "Run time:" << (double)(end-start)/CLOCKS_PER_SEC <<"seconds " <<endl;//统计运行时间

你可能感兴趣的:(文件在缓存中操作)