2011-11-24 6 views
2

j'ai écrit un programme qui ouvre un fichier puis affiche ligne par ligne son contenu (fichier texte)C++ ouvrir un fichier en lecture seule

#include <iostream> 
#include <fstream> 
#include <string> 
using namespace std; 

int main (int argc, char* argv[]) 
{ 
    string STRING;   
    ifstream infile;  
    infile.open(argv[1]); 
    if (argc != 2) 
    { 
     cout << "ERROR.\n"; 
     return 1; 
    } 
    if(infile.fail()) 
    { 
     cout << "ERROR.\n"; 
     return 1; 
    } 
    else 
    { 
     while(!infile.eof()) 
     { 
      getline(infile,STRING); 
      cout<<STRING + "\n"; 
     } 
     infile.close(); 
     return 0; 
    } 
} 

Que dois-je ajouter pour rendre le fichier être lu seulement ?

(infile.open(argv[1]) est où je devine quelque chose va)

+0

OT: Ne pas faire 'while (! Infile.eof())', faire 'while (getline (infile, STRING)) ' – Bart

+0

@Bart s'il vous plaît élaborer – oddRaven

Répondre

13

La classe ifstream est en lecture seule ainsi, le problème est résolu. Aussi, vouliez-vous vraiment vérifier argcaprès en utilisant argv[1]?

D'autre part, lorsque vous utilisez fstream vous devez spécifier comment vous voulez ouvrir le fichier:

fstream f; 
f.open("file", fstream::in | fstream::out); /* Read-write. */ 
1

La valeur par défaut en mode paramètre de open pour ifstream classe est ios::in. C'est

infile.open(argv[1]); 

est identique:

infile.open(argv[1], ios::in); 

Donc, vous ouvrez le fichier en mode lecture seule.

0

Vous avez déjà ouvert le fichier en lecture seule. Vous ne pouvez pas écrire dessus si vous utilisez ifstream. Même:

infile.rdbuf()->sputc('a'); 

est garanti d'échouer.

Questions connexes