2012-05-17 4 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/what-is-the-most-elegant-way-to-read-a-text-file-with-c –

+0

Ahh, спасибо! Работает отлично. – ThatSnail

ответ

3

Вы уже перешли на чтение указатель за конец файла с линией:

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

Вам нужно сбросить его обратно к началу. Вы можете сделать это с помощью:

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

Изменен и он сработал. Используя решение Роба выше, хотя, поскольку он кажется, что исходный код, который я использовал, навсегда ведется, чтобы пробежать символы. Спасибо за помощь! – ThatSnail

Смежные вопросы