C ++为什么我不能使用循环:while(fin>> x)两次

时间:2017-12-05 08:09:15

标签: c++ file loops io

我对c ++文件 I / O 有疑问。 当我在我的程序中使用while(fin>>x)两次并且cout两次时,我只会在屏幕上显示第一次。

我的 test.txt 是:

I like eat banana
I like eat apple 

我的代码:

#include <iostream>
#include <string>
#include <cstdlib>
#include <fstream>
using namespace std;
int main(){
  ifstream fin;
  fin.open("test.txt");
  if(fin.fail()){
    cout<<"Error!"<<endl;
    exit(1);
  }
      else{
    int i=0,j=0;
    string x,y,a[20],b[20];
    while(fin>>x){
    a[i]=x;
    i++;
    }
    fin.
    while(fin>>y){
    b[j]=y;
    j++;
    }
for(int q=0;q<20;q++){
cout<<a[q]<<" ";
}
for(int w=0;w<20;w++){
cout<<b[w]<<" ";
}
  }
  fin.close();
  return 0;
}

1 个答案:

答案 0 :(得分:2)

当您在之后写fin >> x时,fin >> y返回false(并退出第一个循环)的原因仍然存在。因此,一旦留下fin >> x - 循环,将不会输入fin >> y - 循环。