CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
花落谁家,你作主! 盛大widget设计大赛英雄榜
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  扩充话题 >  灌水乐园

怎样从文本文件中读取字符串?

楼主q12345(123)2001-05-18 19:54:00 在 扩充话题 / 灌水乐园 提问

问题点数:33、回复次数:14Top

1 楼iProgram(na)回复于 2001-05-18 19:59:00 得分 2

CStdioFile   f;  
  f.Open(filename,CFile:modeRead);  
  f.ReadLine(szLine,sizeof(szLine);  
  Top

2 楼q12345(123)回复于 2001-05-18 20:11:00 得分 0

怎样从文本文件中搜索指定字符?Top

3 楼seesi(不是我想骗你,是我不知道怎么才能不骗!)回复于 2001-05-18 20:21:00 得分 1

全读进来,然后CString的FindTop

4 楼Semigod()回复于 2001-05-18 20:24:00 得分 1

建议先把文本文件读入缓冲区,然后用汇编语言进行指定字符的搜索。下面是我的某程序中的一段代码,希望这断代码能帮你。  
   
              __asm  
                  {  
                          push         esi  
                          push         edi  
                          mov           al,   cCharacterToScan   //   al中放你想要搜索的字符  
                          mov           edi,     pcTempString     //   edi   中放指向文本内容的缓冲区的地址  
                          mov           ecx,   uiTempNumOfChar   //   ecx   为文本长度  
                          cld                                                     //   正向扫描  
                          repnz     scasb                         //   Look   for   this   character   in   character   list  
                          mov           iSign,   0  
                          setz       byte   ptr     iSign     //   如果找到则   iSign   为1,否则为0  
                          pop           edi  
                          pop           esi  
                  }Top

5 楼prefix(MtSC)回复于 2001-05-18 20:31:00 得分 2

CStdioFile   m_cSourceFile;    
   
   
  int   CImportParam::ReadFile()    
  {    
  CString   sReadLine;    
  int   iLineNumber=1;    
  CFileException*   pError=NULL;    
  if   (m_cSourceFile.Open(m_sImportFileName,CFile::modeRead,pError)   ==   0)    
  {    
  return   -1;    
  }    
  m_cSourceFile.SeekToBegin();    
  while   (m_cSourceFile.ReadString(sReadLine)   ==   1)    
  {    
   
  ...   Do   something   with   the   retrived   line   (sReadLine)   ....    
   
  iLineNumber++;    
  }    
  m_cSourceFile.Close();    
  return   2;    
  }    
   
  Hope   this   helps...   Top

6 楼Semigod()回复于 2001-05-18 20:32:00 得分 0

刚忘了说,找到后   则该字符在文本文件中的偏移值为   ecx   -1Top

7 楼q12345(123)回复于 2001-05-18 20:51:00 得分 0

多谢大家的关注!  
  还能再具体说一说怎样从文本文件中读取一行字符串,并负值到变量中吗?Top

8 楼Semigod()回复于 2001-05-18 22:17:00 得分 1

下面是我程序中的片断,参考一下吧   :-)     别忘了自己该改的改哟  
   
   
  CFile   *   pDictfile;  
  try  
  {  
    pDictfile   =   new   CFile();  
  }  
  catch(CMemoryException   *pMemErr)  
  {  
                  pMemErr->ReportError();  
                  pMemErr->Delete();  
  return;  
  }  
   
  propSheet.m_Page1.m_Dictfile.TrimLeft();  
  while   (pDictfile->Open(propSheet.m_Page1.m_Dictfile,   OF_READ,   NULL)   ==   FALSE)  
  {  
                          if   (AfxMessageBox(IDS_MSG_INVALIDDICT,MB_RETRYCANCEL)==IDCANCEL)  
  {  
  delete   pDictfile;  
  return;  
  }  
  }    
   
  DWORD   dwDictLength=pDictfile->GetLength();  
  if   (!m_pDictbuffer)  
  {  
  try  
  {  
  m_pDictbuffer   =   new   char[dwDictLength+100];  
  }  
  catch(CMemoryException   *pMemErr)  
  {  
                  pMemErr->ReportError();  
                  pMemErr->Delete();  
  pDictfile->Close();  
  delete   pDictfile;  
  m_pDictbuffer   =   0;  
  return;  
  }  
  }  
  while   (!   pDictfile->Read(m_pDictbuffer,   dwDictLength))  
  {  
                  if   (AfxMessageBox(_T("Can   not   read   dictionary   file."),   MB_RETRYCANCEL)==IDCANCEL)  
  {  
  pDictfile->Close();  
  delete   pDictfile;  
  delete   m_pDictbuffer;  
  m_pDictbuffer   =   0;  
  return;  
  }  
  }  
          pDictfile->Close();  
  Top

9 楼yuezw()羊拉多纳()回复于 2001-05-18 22:24:00 得分 3

CFile   file("C:\HELLO.TXT",CFile::modeRead);///只读方式打开  
  ///CFile::modeRead可改为   CFile::modeWrite(只写),CFile::modeReadWrite(读写),CFile::modeCreate(新建)  
  例子:  
  {  
  CFile   file;  
  file.Open("C:\HELLO.TXT",CFile::modeCreate|Cfile::modeWrite);  
  .  
  .  
  .  
  }  
  //移动文件指针  
  file.Seek(100,CFile::begin);///从文件头开始往下移动100字节  
  file.Seek(-50,CFile::end);///从文件末尾往上移动50字节  
  file.Seek(-30,CFile::current);///从当前位置往上移动30字节  
  file.SeekToBegin();///移到文件头  
  file.SeekToEnd();///移到文件尾  
  //读文件:  
  char   buffer[1000];  
  file.Read(buffer,1000);  
  //写文件:  
  CString   string("自强不息");  
  file.Write(string,8);  
  //关闭文件  
  file.Close();  
  够详细了吧,记着给分Top

10 楼q12345(123)回复于 2001-05-18 23:21:00 得分 0

主要参考上面一段介绍(比较好看懂),编译时无错,但一运行就有错,弹出一个对话框,要我终止或忽略。另外,怎样把文件中的字符串读到一个CString   的变量里。Top

11 楼q12345(123)回复于 2001-05-19 11:24:00 得分 0

请赐教  
  Top

12 楼xianglusong(向陆松)回复于 2001-05-19 12:14:00 得分 15

CStdioFile   fp;  
  fp.Open(filanema,CFile::modeRead,NULL);  
  CString   s,str;  
  s="";  
  while(!feof(fp.m_pStream))  
  {  
          fp.ReadString(str);  
          s+=str;  
          s+=13;  
          s+=10;  
  }  
  fp.Close();  
  m_Edit1.SetWindowText(s);Top

13 楼q12345(123)回复于 2001-05-19 13:59:00 得分 0

参考上面的程序,编译时无错,运行时还是有错,说程序执行了非法操作,  
  我的程序是在   void   CMy123Dlg::OnButton1()   中添加的,如下:  
  CStdioFile   fp;  
  fp.Open("c:\1.txt",CFile::modeRead,NULL);  
  CString   s,str;  
  s="";  
  while(!feof(fp.m_pStream))         //这行是什么意思?  
  {  
          fp.ReadString(str);  
          s+=str;  
          s+=13;         //  
          s+=10;         //这两行是什么意思?  
  }  
  fp.Close();  
  m_Edit1=s;  
  UpdateData(false);Top

14 楼xianglusong(向陆松)回复于 2001-05-19 14:18:00 得分 8

在fp.Open("c:\1.txt"...)有错。  
  应是fp.Open("c:\\1.txt"...);  
  //这行是判断文件是否结束。  
  //  
  //这两行加上回车符。软回车与硬回车啊。  
  Top

相关问题

  • 关于读取文本文件中字符串的问题
  • 如何从文本文件中读取出中文字符串
  • 从文本文件中读取汉字字符串时乱码的问题
  • 怎样从文本文件中找到指定字符串,并把它删除。
  • 怎样对文本文件一次读出一行到字符串里?
  • 怎样将一个字符串保存为一个文本文件!?
  • 请教怎样在文本文件中的指定行插入字符串?
  • 请问:怎么从文本文件中读取字符串,怎么修改其中的字符?
  • 怎么样才能读取文本文件内指定行数的字符串呢???(急)
  • 读取文本文件中字符串到数组里的问题,解决必给分

关键词

  • 字符
  • null
  • pdictfile
  • pdictbuffer
  • pmemerr
  • 文本文件
  • csourcefile
  • 字符串
  • fp
  • dwdictlength

得分解答快速导航

  • 帖主:q12345
  • iProgram
  • seesi
  • Semigod
  • prefix
  • Semigod
  • yuezw
  • xianglusong
  • xianglusong

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo