2012-05-17 91 views
0

读取内容为“aaaaa”且char *文本返回“”的文件。ifstream返回空字符串?

执行该步骤后,显示它在翻阅和结束之前会经历一次fp >>文本行。该文件可以正确打开。有任何想法吗?

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

欢迎来到堆栈溢出!你是否试图将文件的全部内容读入字符数组?还有其他方法可以做到这一点。 http://stackoverflow.com/questions/116038/what-is-the-best-way-to-slurp-a-file-into-a-stdstring-in-c http://stackoverflow.com/questions/195323 /什么是最优雅的方式来阅读一个文本文件与c –

+0

啊,谢谢!完美的作品。 – ThatSnail

回答

3

您已经移动了读指针过去与行的文件的末尾:

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

您需要重置回开头。你可以这样做:

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

改变,它的工作。尽管使用Rob的解决方案,但因为它看起来像我使用的原始代码需要永远运行字符。谢谢您的帮助! – ThatSnail