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

C++ Why I can't use the loop: while(fin>>x) for twice

本文关键字:gt fin 两次 while 不能 为什么 循环 C++      更新时间:2023-10-16

我在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;
}

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