Witam, mam problem przy korzystaniu z przeciążenia operatora >> dla strumienia fstream. Zdefiniowałem przeładowanie następująco:

istream & operator >> (istream &  StrmWej, LZespolona &  lz){
  
  StrmWej>>lz.re>>lz.im;
  
  if(StrmWej.fail()){
     cout << "*** Blednie wprowadzona liczba:" << endl;
     cout << "*** Blad zapisu liczby." << endl << endl;
     StrmWej.setstate(ios::failbit);                            
     return StrmWej;
  }
  if(StrmWej.peek()!=('i')){
     cout << "*** Blednie wprowadzona liczba:" << endl;
     cout << "*** Brak 'i'." << endl << endl;
     StrmWej.setstate(ios::failbit);
     return StrmWej;
  }
  
  StrmWej.ignore();
  return StrmWej;
}

Przy czytaniu liczb zespolonych z cin działa bez zarzutu - natomiast gdy chcę to samo wczytać z pliku zawsze dostaje fail dla strumienia. Czy da się w jakiś sposób sprawić żeby fstream zachowywał się tak samo jak istream?