我现在有一个子txt文件,里面都是相应的数据,格式化是这样的
[123,122]113 [123,231]12 [123,324]231 。。(后面还有很多相似的值)
其中括号内的是坐标值,我现在要读的的坐标后面对应的数据,也就是113,12和231,请问各位这样应该怎么读出来,已经困惑好多天了,本人菜鸟啊,实在是入不了门,还请大侠们帮忙,求个程序,小妹谢谢了

解决方案 »

  1.   

    这个简单啊,
    打开文件后把所有的文字都放入一个CString中
    运用Find函数和Mid函数可以轻松做到。
    比如CString str="[123,122]113 [123,231]12 [123,324]231"
    int start=str.Find("[123,122]",0);
    int end=str.Find("[123,231]",0);
    CString strf=str.Mid(start+9,end-start-9);
    后面以此类推,最后转换一下格式就可以了用atoi
      

  2.   

    给你两个字符串分割的函数 
    /**************************************************************************** 

    * 函数指针:  SplitCString 
    * 描    述: 将字符串按给定的符号进行拆分 
    * 创    建: 黄德才[2008-4-11 8:59:58] 

    * 返    回: [int] - 拆分后的子串个数 

    * 函数参数 :[in]  strIn  - 需要进行拆分的字符串 
    *   [out] strAryRe- 拆分后的字符串数组 
    *   [in]  c   - 分割符 
    ****************************************************************************/ 
    int CSysCfgApp::SplitCString(CString strIn, CStringArray& strAryRe, char division) 

    strAryRe.RemoveAll(); 
    if (!strIn.IsEmpty()) 

    int nCount = 0; 
    int nPos = -1; 
    nPos = strIn.Find(division); 
    CString strTemp = strIn; 
    while (nPos != -1) 

    CString strSubString = strTemp.Left(nPos);  
    strTemp = strTemp.Right(strTemp.GetLength() - nPos-1);  
    nPos = strTemp.Find(division); 
    nCount++; 
    strAryRe.Add(strSubString); 
    } if (nCount == strAryRe.GetSize()) 

    CString str; 
    int nSize = strIn.ReverseFind(division); 
    str = strIn.Right(strIn.GetLength()-nSize-1); 
    strAryRe.Add(str); 

    } return strAryRe.GetSize(); 
    } /**************************************************************************** 

    * 函数指针:  SplitCString 
    * 描    述: 将字符串按给定的符号进行拆分 
    * 创    建: 黄德才[2008-4-11 9:30:58] 

    * 返    回: [int] - 拆分后的子串个数 

    * 函数参数 :[in]  strIn  - 需要进行拆分的字符串 
    *   [out] strAryRe- 拆分后的字符串数组 
    *   [in]  str   - 分割字符串 
    ****************************************************************************/ 
    int CSysCfgApp::SplitCString(CString &strIn, CStringArray& strAryRe, LPCTSTR str) 

    if (str == _T("")) 

    strAryRe.RemoveAll(); 
    return 0; 
    } int nStart = 0; 
    int nEnd = 0; 
    CString strTmp; 
    while ( (nEnd = strIn.Find(str, nStart)) != -1 ) 

    strTmp = strIn.Mid(nStart, nEnd-nStart); 
    strAryRe.Add(strTmp); 
    nStart = nEnd+2; 

    strTmp = strIn.Mid(nStart, strIn.GetLength()); 
    strAryRe.Add(strTmp); return strAryRe.GetSize(); 

      

  3.   

    CString str; 
    str="_1_张三_123456789"; 
    CStringArray strAry; 
    SplitCString(str,strAryRe,'_'); // 分割字符串 
    for ( int i = 0; i < strAry.GetSize(); i++ ) 

      strAry.GetAt(i) // 数组strAry中每个成员都是分割后的字符串 
      // do somthing 
    }  
      

  4.   

    实在很菜的话也可以看看以下代码(这是我以前刚学的时候写的....那时只会c所以这样写看起来比较容易看懂)str7=_T("1_张三123456789"); 
      int a1,a2,a3,a4,a5; 
      a1=str7.GetLength(); 
      LPTSTR p = str7.GetBuffer(100);          //... 这个指针 p 发生了很多事情 
        for( int i = 0 ; i < a1 ; i++) 
      {  
      if(p[i]=='_') 
    {  
    a2=i+1; 

    } for( a2 ; a2 < a1 ; a2++) 
    { if(p[a2]>126) 

          str6+=p[a2]; 

    if(p[a2]>=48 && p[a2] <=57) 

    str5+=p[a2]; 

    }   MessageBox(str6); 
      MessageBox(str5);