我要将一个txt文本(大概几百行)的内容放到内存,再从内存一行行提取数据解析内容。1、思路是不是把文本一行一行的读到内存,为每一行的数据动态new一个空间,动态申请n个
连续的内存空间去存放文本中的n行,再通过指针来访问内存来提取数据呢?
2、能不能像下面这样去把文本读到内存?
   CStdioFile sf;
   CString t;
   sf.Open(strPath, CFile::modeCreate | Cfile::modeWrite);
   sf.ReadString(t);
   //****接着怎么写啊
不对的话请给些代码 包括怎么一行行读到内存,怎么存放在内存中,如何去访问内存,麻烦分析一下

解决方案 »

  1.   

    不用声请n个连续的空间ifstream inFile(...);string   strBuf;   
    while(ifs)   
    {   
         if(getline(inFile,   strBuf))   
         {   
              cout   <<   strBuf <<   endl; // 你这里就在操作内存了  
         }   
    }   
      

  2.   

    如果是在内存中提取, 为啥不用strtok呢?
      

  3.   

    如果每行都new一下,有点太麻烦了。你可以把整个文本都读到内存中,然后对读取的数据进行解析。
    下面用CFile读取的,简单流程如下:
    CFile file;
    file.open();
    int len=file.getlength();
    file.read(buf,len);
    //下面就是你自己对buf中的数据进行分析 ,你可以根据行结束符来判断每行
    ..........
    如果不想用CFile你也可以用FILE,CreateFile()来读取。
    如果你想一行一行的读 就用CStdioFile,做个循环把每行数据读到内存中。你可以用一个字符串数组来存储每行的数据。
      

  4.   

    不提倡频繁调用new, 这要的代码虽然一般不会出错,但给人感觉总是不安全