在外部while循环的第二次迭代中,它不会在管道之后从src1和src2中读取下一个值

时间:2019-03-31 09:13:57

标签: c++ fstream

我正在外部while循环的每次迭代中从文件src1和src2读取值,直到下一个管道(|)。在第二次迭代中,它不会在管道符号之后从src1和src2中读取下一个值。 我基本上是在进行2S1D文件排序,其中每个“运行”的末尾都用“ |”标记。此代码涉及src文件的合并。 “ |”输入流会将符号读取为0。

void Merge()
{
    fstream src1("Src1.txt",ios::in | ios::out);
    fstream src2("Src2.txt",ios::in | ios::out);
    fstream dest("Dest.txt",ios::in |ios::out);

    int buff1,buff2;

    //Outer While
    while(!src1.eof() && !src2.eof())
    {

        src1>>buff1;  //not reading the next value in file in 2nd iteration
        src2>>buff2;  //and so on.

        cout<<"\nbuff1:"<<buff1<<endl<<"buff2:"<<buff2;
        cout<<"\n=======\n";
        while(buff1!=0 && buff2!=0)
        {
            if(buff1<buff2)
            {
                dest<<buff1<<" ";
                cout<<"\n"<<buff1;
                src1>>buff1;
                cout<<"\n"<<buff1;
            }
            else
            {
                dest<<buff2<<" ";
                cout<<"\n"<<buff2;
                src2>>buff2;
                cout<<"\n"<<buff2;
            }
        }
        if(buff1==0)
        {
            while(buff2!=0)
            {
                dest<<buff2<<" ";
                src2>>buff2;
            }
        }
        else if(buff2==0)
        {
            cout<<"\nHello1";
            while(buff1!=0)
            {
                dest<<buff1<<" ";
                cout<<"\n"<<buff1;
                src1>>buff1;
                cout<<"\n"<<buff1;
            }
        }
        dest<<" | ";
    }

`````````````````````````````````````````````````````````````````````````````

    string str;
    if(src1.eof())
    {
        getline(src2,str,'|');
        dest<<str<<" |";
    }
    else if(src2.eof())
    {
        getline(src1,str,'|');
        dest<<str<<" |";
    }
}

`````````````````````````````````````````````````````````````````````````````

src1.txt:
 11  |  9  |  7  |  4 5  |  1 2 | 

src2.txt:
 10  |  8  |  6  |  3  | 

0 个答案:

没有答案