我的一个文件中有如下的数据:
A12356842355466133
A5123356631621166658112
A189851465662133311335586
A824653791225591336561338
......     [/color[color=#33CCCC]]//以A开头的若干行数据
B4566136989211329846113325658
B789454123115210236125466023132
B15413564555613321312121
B781421234165
......
     //以B开头的若干行数据通常读取文件是从第一行开始读的,我现在想从以B开头的行数作为第一行开始读,然后读以A开头的行数。
也就是先读以B开头的数据,再读以A开头的数据,按行读取。请问有没有详细点的解决方法,有参考代码更好。感谢~

解决方案 »

  1.   

    额。既然能保证A开头的都在B开头的前面。我觉得,在最最开始记录下来A开头的行数或者记录下来B开头的第一行是第多少航应该不难。
      

  2.   

    用xml方式来读取的话,就随便你读哪行都可以了吧
      

  3.   

    char *pStr = "B789454123115210236125466023132";
    if (pStr[0] == 'B')
    {
        //像這樣?
    }
      

  4.   

    CStdioFile file;
    file.open("",);
    CString szFlag;
    Cstring szData;
    std::map<string,std::vector<cstring> > mapStr;
    mapStr.clear();
    while(file.ReadString(szData))
    {
       szData.Trim();
       szFlag= szData.Left(1);
       std::vector<cstring>& vec = mapStr[szFlag];
       vec.push_back(szData)
       
    }
    std::map<CString,std::vector<CString> > ::iterator it = mapStr.begin()
    for(it !=mapStr.end();it++)
    {
       if(it->first =="B")
    {
        std::vector<cstring>& vec = it->second;
        //遍历vec 输出B;
    }
    }
    std::map<CString,std::vector<CString> > ::iterator it = mapStr.begin()
    for(it !=mapStr.end();it++)
    {
       if(it->first =="A")
    {
        std::vector<cstring>& vec = it->second;
        //遍历vec 输出A;
    }
    }
      

  5.   

    定义两个map:
    map<CString,CString>map1;
    map<CString,CString>map2;每次读取一行,判断首字符:
    如果为A,则把该数据放到map1中,如果为B,则把该数据放到map2中在程序中需要读取的地方,直接从map1或者map2中直接读取
      

  6.   

    我贴的代码 
    1.全部读出文本内容
    2.转化为不同字符串对应的Vector 映射  A ====> vevtor 存放 A为标志的 字符串 
    B=====>VECtor 存放B为标志的字符串
    3.输出 先输出B 中的字符串 后输出A中的字符串
      

  7.   

    问题解决了。
    没用Vector,对这个东西不熟
    感谢各位!