MFC点点滴滴——文本中搜索关键字(方法总结)

来源:互联网 发布:网络连接678什么意思 编辑:程序博客网 时间:2024/04/29 21:05

1.直接读入CString使用Find()

CFile   f( "file.txt ",CFile::modeRead); 

CString   strBuf; 

f.Read(strBuf.GetBuffer(f.GetLength()),f.GetLength); 

strBuf.ReleaseBuffer(); 

f.Close(); 

strBuf.Find( "RollBack "); 

/////////////////////////////////////////////////

CFile file1; 

 if(!file1.Open(theApp.filename,CFile::modeRead)) { AfxMessageBox(_T("文件无法打开")); return FALSE; } 

char [] str= new char[ file1.GetLength() ];

memset( pFileContent , 0, file1.GetLength()  );

file1.Read(str,file1.GetLength()); file1.Close();

 CString stemp(str); 

str.Find( "XXX "); 

/////////////////////////////////////////////////

#include   <iostream.h> 
int   FindStringInText(const   char*   FileName,const   char*   FindString) 

int   result=FALSE; 
CString   str= " "; 
if(GetFileAttributes((LPCTSTR)FileName)==0xFFFFFFFF) 

return   -1;         //指定文件不存在 

CFile   file((LPCTSTR)FileName,CFile::modeRead); 
char*   temp=new   char[file.GetLength()+1]; 
memset(temp,0,file.GetLength()+1); 
file.Read(temp,file.GetLength()); 
str=temp; 
result=str.Find((LPCTSTR)FindString,0); 
file.Close(); 
delete   []temp; 
temp=NULL; 
return   result+1; 


void   main() 

int   position=FindStringInText( "f:\\test.txt ", "测试 "); 
switch   (position) 

case   -1: 

cout < < "逗我玩啊?!指定文件不存在! " < <endl; 
break; 

case   0: 

cout < < "弄错了吧,你说的那个文件中没有你要找的字符! " < <endl; 
break; 

default: 

cout < < "你要找的字符在文件中第 " < <position < < "个字符处! " < <endl; 
break; 



} (雪上加冰)

 在http://topic.csdn.net/t/20050330/10/3893213.html中(忧郁王子)的有一段代码

2.文本逐行读,然后在这一行用查找子串 

得到

if(!file.Open(sFileName,   CFile::modeRead)) { m_sError= "Unable   to   open   testplan   file!\n\ " "   +   sFileName   +   "\ " "; return   1; } CString   sItem,   str; while(file.ReadString(sItem)) { if(sItem.Find( '# ')   ==   -1) { if(sItem.Find( "BEGIN   OF   FILE ")   !=   -1)   break; else   if(sItem.Find( "Information ")   !=   -1) m_sInfomation   =   sItem.Mid(25); else   if(sItem.Find( "Version ")   !=   -1) { extern   CString   g_sTestplanVersion; g_sTestplanVersion   =   sItem.Mid(25); } } }


个人现在使用的是这种方法,说不上是最快的,单对于文本文档来说,一是不需要考虑其的大小,二是逐行读再用CString的Find查找关键字很方便。如果区分大小写,先str.MakeUpper()或lower下,整体处理后在用find().

3.调用windows索引服务

这部分暂时没有收集整理

原创粉丝点击