2012-05-17 4 views
0

Lire un fichier avec le contenu "aaaaa" et le texte char * renvoie "". Après l'exécution de l'étape, elle passe une fois dans la ligne de texte fp >> avant de passer au-dessus et de se terminer. Le fichier s'ouvre correctement. Des idées?ifstream retourne une chaîne vide?

char* Load_Wave_File(char *fname) 
{ 
    std::ifstream fp(fname,std::ios::binary); 

    std::streampos fsize=0; 
    fsize=fp.tellg(); 
    fp.seekg(0,std::ios::end); 
    fsize=fp.tellg()-fsize; 

    char* text; 
    text=new char[fsize]; 
    if(fp.is_open()) 
    { 
     while(!fp.eof()) 
     { 
      fp>>text; 
     } 
     fp.close(); 
     return text; 
    } 
    else 
    { 
     fp.close(); 
     return false; 
    } 
} 
+0

Bienvenue dans Stack Overflow! Essayez-vous de lire tout le contenu du fichier dans un tableau de caractères? Il y a d'autres façons de le faire. http://stackoverflow.com/questions/116038/what-is-the-best-way-to-slurp-a-file-into-a-stdstring-in-c http://stackoverflow.com/questions/195323 Quel est le moyen le plus élégant de lire un fichier texte avec c –

+0

Ah, merci! Fonctionne parfaitement. – ThatSnail

Répondre

3

Vous avez déjà déplacé le pointeur de lecture après la fin du fichier avec la ligne:

fp.seekg(0,std::ios::end); 

Vous devez réinitialiser revenir au début. Vous pouvez le faire avec:

fp.seekg(0,std::ios::beg); 
+0

Modifié et cela a fonctionné. En utilisant la solution de Rob ci-dessus, car il semble que le code d'origine que j'utilisais prend une éternité à parcourir les caractères. Merci pour l'aide! – ThatSnail

Questions connexes