2010-04-05 4 views
4

Je suis en train de lire un fichier ligne par ligne à une variable de type chaîne en utilisant le code suivant:Comment lire un fichier ligne par ligne dans une variable de type chaîne?

#include <iostream> 
#include <fstream> 


ifstream file(file_name); 

if (!file) { 
    cout << "unable to open file"; 
    exit(1); 
} 

string line; 
while (!file.eof()) { 
    file.getline(line,256); 
    cout<<line; 
} 
file.close(); 

il ne compilera pas lorsque je tente d'utiliser la classe String, seulement quand je l'utilise char file[256] à la place. Comment puis-je obtenir ligne par ligne dans une classe de chaînes?

+3

Notez comment James vérifie le flux. 'std :: getline' renvoie le flux, et les flux peuvent être vérifiés de cette façon:' while (file) '; C'est la bonne façon. (La vérification de 'eof' n'est pas.) Voir: http://punchlet.wordpress.com/2009/12/01/hello-world/ – GManNickG

Répondre

10

Utilisation std::getline:

std::string s; 
while (std::getline(file, s)) 
{ 
    // ... 
} 
+1

7 secondes ... bien. : p – GManNickG

+0

merci! il me manquait l'utilisation de l'espace de noms std. – ufk

+5

@ufk: Non, vous utilisiez la fonction membre 'istream :: read'; vous devez utiliser la fonction 'std :: getline', qui n'est pas une fonction membre. –

Questions connexes