2011-05-10 7 views
0

J'ai un fichier qui contient du texte. Je lis ligne par ligne du fichier entier et ajoute à un objet chaîne. Mais quand j'obtiens l'impression finale de chaîne je n'obtiens pas le contenu entier de dossier. Je suis sûr que cela est dû à la présence de caractères spéciaux comme '\ n', '\ r', '\ t', etc.Problème lors de la lecture du contenu du fichier

ici est mon exemple de code:

// Read lines until end of file (null) is reached 
do 
{ 
    line = ""; 
    inputStream->read_line(line); 

    cout<<"\n "<<line;//here i get the content of each line 
    fileContent.append(line);// here i am appending 
}while(line.compare("") != 0); 
+0

Afficher plus de code, comme où vous déclarez '' inputStream' et fileContent'. – ildjarn

Répondre

1

C'est le façon de lire un fichier dans la mémoire en C++:

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

int main() { 
    vector <string> lines; 
    ifstream ifs("myfile.txt"); 
    string line; 
    while(getline(ifs, line)) { 
     lines.push_back(line); 
    } 
    // do something with lines 
} 
+0

une erreur de compilation se produit ... – boom

+0

@iSight Pas avec mon compilateur ce n'est pas le cas. Quelle erreur obtenez vous? –

+0

Désolé, je dois passer const char * dans le constructeur ifs. – boom

1

Vous devez montrer plus de code pour moi de savoir ce que votre problème.

Si vous lisez le fichier entier en une seule chaîne, c'est la méthode que je l'habitude d'utiliser:

#include <string> 
#include <fstream> 
#include <iterator> 

std::string read_file(const char *file_name) 
{ 
    std::filebuf fb; 

    if(!fb.open(file_name, std::ios_base::in)) 
    { 
     // error. 
    } 

    return std::string(
     std::istreambuf_iterator<char>(&fb), 
     std::istreambuf_iterator<char>()); 
} 
Questions connexes