我正在外部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 |