2013-05-28 4 views
2

J'ai réussi à écrire dans un fichier texte, mais quelque chose s'est mal passé avec mon fichier lu. Voici mon code:Lire et écrire un fichier en C++

#include <iostream> 
#include <fstream> 
#include <string> 

using namespace std; 

int main() 
{ 
    string line, s; 
    ofstream out_file; 
    out_file.open("hello.txt"); 
    for(int count = 0; count< 5; count++) 
    { 
     out_file << "Hello, World" << endl; 
    } 
    out_file.close(); 

    ifstream in_file; 
    in_file.open("hello.txt"); 
    if (in_file.fail()) 
    { 
     cout << "File opening error. " << endl; 
    } 
    else 
    { 
     while(getline(in_file,line)) 
     { 
      in_file >> s; 
      cout << s << endl; 
     } 
    } 
    in_file.close(); 

    system("Pause"); 
    return 0; 
} 

J'ai réussi à écrire 5 fois "Hello, World" dans un fichier texte. Cependant, lorsque le programme s'exécute, il affiche seulement "Bonjour", pour 4 fois et la 5ème ligne avec "Monde". De mon code, n'est-ce pas censé imprimer "Hello, World" pour 5 fois? Quelqu'un peut-il s'il vous plaît indiquer où est l'erreur?

+0

's fichier_entree >>;' arrêts dans l'espace. –

+0

Alors comment dois-je le réparer? Il y a une erreur si je mets getline (in_file, s) à –

+0

'in_file >> s;' devrait être 'line >> s;' bien que cela vous donnerait un bogue différent. –

Répondre

3
while(getline(in_file,line)) 
{ 
    in_file >> s; 
    cout << s << endl; 
} 

devrait être:

while(getline(in_file,line)) 
{ 
    cout <<line<< endl; 
} 

Puisque vous lisez à partir du fichier dans line, non s. donc vous devriez imprimer le contenu à l'intérieur line.

+0

Oh d'accord. C'est corrigé maintenant. Merci beaucoup –

+0

@Carol vous êtes les bienvenus. – taocp

3

Vous lisez le fichier et faire GetLine en utilisant l'opérateur >>

vous devriez essayer

while(getline(in_file,line)) 
{ 
    cout << line << endl; 
}