文本文件时这样的:
    sfasdfdasfdasf
   …… "aa"……
   …… "bb"……
    sdafasdfasd
如题,怎么获得这些字符?用CStdioFile可以吗?

解决方案 »

  1.   

    已经解决,demo程序,下载地址:http://download.csdn.net/detail/thisismyway/4585566
      

  2.   

    CString::Find/Mid/Left/Right()应该就可以解析的出来吧~
      

  3.   

    //================================================================= 
    #include <stdio.h>  
    #include <string.h>    
    #include <iostream.h> void main() 

    /*
    对于只提取一个
    char *p ="sfasdfdasfdasf"
    "…… \"aa\"……";
    char buf[100] = {0};   int ret = sscanf(p, "%*[^\"]\"%[^\"]", buf);
      cout<< buf <<endl;
      cout<< ret <<endl;
    */

    char string[] = "sfasdfdasfdasf"
    "…… \"aa\"……"
    "…… \"bb\"……"
    "sdafasdfasd"; char seps[]   = "\"";
    char *token;
    bool flag = false;


    printf( "%s\n\nTokens:\n", string );

    token = strtok( string, seps );
    while( token != NULL )
    {
    if (flag==true)
    {
    printf( "%s\n", token );
    }
    flag = !flag;

    token = strtok( NULL, seps );
    }




      

  4.   

    嗯,解析出来了,太蛋疼了,具体问题看我代码,该代码可以用,已经调试好:
    CStdioFile  file; //草泥马的cstdiofile类
    file.Open(_T("F:\\11 - 副本 (10).txt"/*m_edit_dir*/),CFile::modeReadWrite); //读取文件
    CString strLine(_T("")); // 一行文本
    CString strText(_T("")); 
    CString strEnd(_T("\n"));
    CString strTmp(_T("")); // “”左边的部分 CString strInsert(_T("")); //代替N的c int  flag = -1; int curPos = 0;
    while(file.ReadString(strLine)) //读行
    {
    int start = 0;
    curPos = strLine.Find('\"',start); //找双引号的位置 static  int n = 1; //ID号 if(curPos != -1) //尼玛这段代码,用strTmp作为游标判断“的位置,让我数的头发都白了。
    {
    strTmp = strLine.Left(curPos); //双引号左边部分
    strLine.Replace(strTmp,L"<id_C"); //替换文本 curPos = strLine.Find('\"',start); //找双引号的位置
    strTmp = strLine.Left(curPos); //双引号左边部分 strInsert.Format(L"%d",n);
    strLine.Replace(L"C",strInsert); curPos = strLine.Find('\"',start); //找双引号的位置
    strTmp = strLine.Left(curPos); //双引号左边部分 strLine.Insert(curPos,_T("  text= ")); //N序号后面的字符 curPos = strLine.Find('\"',start); //找双引号的位置 int curPosBegin = curPos;
    CString sTemp = strLine.Right(strLine.GetLength() - curPos - 1);
    int m =  sTemp.Find('\"');
    int mm = curPosBegin + m + 1 ; strTmp = strLine.Mid(mm + 1,strLine.GetLength() - mm + 1);
    strLine.Replace(strTmp,L" />"); n ++; strText += strLine+_T("\r\n"); //换行