nem.txt文件格式如下:
0 2 3 4 5
2.1 3.2
4.2 6.7
23.1 3.2
3.4 3.50 4 5 6
2.1 4.6
9.8 9.5
2.3 8.51 6 7 8
2.1 2.2 
2.3 2.4
文件主要有多个相同的数据块构成,每块的第一行的第一个数据是标识位,即0和1。每个数据块的行数不同,
同一行数据之间由空格隔开
我现在的问题是: 
如何只读取标识为   1  时的数据块的内容??????????????
最好能给出代码!!!!!!!!!
不甚感激!!!!!

解决方案 »

  1.   

    将TXT内容全部读入str里面,在通过str.Find()函数判断换行符/r/n位置,通过str.Left()读取换行符前面的数据,即第一行数据,以此类推,可以读出每一行的数据,放入str1,再判断str1的第一个字符是不是1就可以
      

  2.   

    伪代码:
    bool zeroBlock; zeroBlock=false;
    bool oneBlock;  oneBlock=false;aryOneblock[][];
    int blockindex=0;while(!feof(fp)) {
    fp.readline(ary);
    if (ary[0] == '1') {
      if (zeroBlock) {
        zeroBlock = false; //读完0数据块结束
        oneBlock = true;
      } else if (oneBlock) {//读完1数据块结束
        process(aryOneblock[blockindex]);
        blockindex++;
      } else if (!oneblock) {//开始读取1数据块
        oneBlock = true;
        aryOneBlock[blockindex][xxx] <- ary
      }
    else if (ary[0] == '0') {
      if (oneBlock) {
        process(aryOneblock[blockindex]);
        blockindex++;
        oneBlock=false;
      }
      zeroBlock = true;
    } else {
      //由于0数据块不处理,所以不读取
      if (oneBlock) { //读取1数据块中
        aryOneBlock[blockindex][xxx] <- ary
      }
    }
    }
      

  3.   


    bool PatientDatebase::LoadDatabase()
    {
    const int  MAX_LINE_BUF=25;
    char lineBuf[MAX_LINE_BUF];
    char firstname[MAX_LINE_BUF],lastname[MAX_LINE_BUF],doc_name[MAX_LINE_BUF];
    int sin,id,iRet;
    ifstream iDatabase;
    iDatabase.open("C:/Users/lrp/Desktop/patient.txt");
    Patient patient;
    if (!iDatabase.is_open() )
    {
    cout<<"open error"<<endl;
    return false;
    }

    while( iDatabase.getline(lineBuf, MAX_LINE_BUF, '\n') )
    {
    if(lineBuf[0]==' ')
    {
    continue;
    }
    iRet = sscanf(lineBuf,"%s %s %d %s %d",firstname,lastname,&sin,doc_name,&id);
    if(iRet!=5)
    {
    continue;
    }
    patient.first_name=firstname;
    patient.last_name=lastname;
    patient.SIN=sin;
    patient.doc_name=doc_name;
    patient.ID=id;
    database.push_back(patient);
    } list<Patient>::iterator it = database.begin();
    for(it = database.begin(); it != database.end(); ++it)
    { cout << '\t' << it->first_name << '\t' << it->last_name << '\t' << it->SIN << '\t' << it->doc_name << '\t' << it->ID << endl; }
    return true;
    }
    这是我这几天弄的一个程序的一部分,就是读取patient.txt中的内容
    你研究研究把if 的条件改改就成