ah oui, merde, j'avais pas vu. quand tu arrives en fin de fichier, le flag eof est positionné. donc il faut remettre les ardoises à zéro avec ::clear()
Code :
- #include <iostream>
- #include <fstream>
- #include <string>
- using namespace std;
- int main(int argc, char **argv)
- {
- ifstream ifs;
- istream *isp=0;
- if(argc!=2)
- {
- cout << "Utilisation de « cin »\n";
- isp=&cin;
- }
- else
- {
- cout << "Utilisation de « " << argv[1] << " »\n";
- ifs.open(argv[1]);
- isp=&ifs;
- }
- istream &is(*isp);
-
- if(!is)
- {
- cout << "Impossible d\'ouvrir le flux\n";
- return 1;
- }
- string s;
- cout << "Lecture\n";
- while(getline(is, s))
- {
- cout << s << '\n';
- }
- is.clear();
- if(is.seekg(0, ifstream::beg))
- {
- cout << "Relecture\n";
- while(getline(is, s))
- {
- cout << s << '\n';
- }
- }
- else
- {
- cout << "Ce n'est pas un flux positionnable\n";
- }
- }
|
edit: petite amélioration
Message édité par Taz le 24-07-2003 à 01:10:56