Использование функции EOF в качестве условия - PullRequest
2 голосов
/ 09 июня 2011

Я пытаюсь импортировать данные из файла в моем проекте, но мне не удается найти EOF .Во-первых, я использовал функцию EOF в качестве условия , но после прочтения this я попытался изменить код, но все равно он выдает ту же ошибку.Пожалуйста, помогите мне.Спасибо

#include <iostream>
#include <string>
#include <fstream>
using namespace std;
class Rooms;
class Guest;
class MeetingRoomGuest;
Rooms* r_ptr[999];
int r_count=0;

ofstream infile("new.txt",ofstream::binary);
while(infile.read((char *)(&r_ptr[r_count]),sizeof(Rooms)))
{   
    r_count++;
}
infile.close(); 
int main ()
{
    // some code here
    return 0;
}

ОШИБКА:

ошибка C2059: синтаксическая ошибка: 'while'

ОБНОВЛЕНИЕ: Пожалуйста, дайте мне знать, если это лучшая реализация? Спасибо

int main()
{
    r_ptr[r_count]= new Rooms;
    while(infile.read((&r_ptr[r_count]),sizeof(Rooms)))
    {   
        r_ptr[++r_count]= new Rooms;
        r_count++;
    }
    infile.close(); 
    //some code here
}

Я все еще получаю ошибку,

ОШИБКА:

ошибка C2039: «чтение»: не является членом «std :: basic_ofstream <_Elem, _Traits>»

ОБНОВЛЕНИЕ: Большое спасибо.Код окончательно исправлен, вот окончательная реализация,

int main()
{
    r_ptr[r_count]= new Rooms;
    while(infile.read((char *)(&r_ptr[r_count]),sizeof(Rooms)))
    {   
        r_count++;
        r_ptr[r_count]= new Rooms;

    }
    infile.close(); 
    // some work
}

Ответы [ 2 ]

3 голосов
/ 09 июня 2011

Кажется, у вас одна или две проблемы с синтаксисом:

  1. у вас есть код вне функции или main (команды while и infile), которые нужно поместить в main или функцию.

  2. ваш второй пока нуждается в do (do{....}while(1), также он работает вечно

  3. Все ваши переменные определены за пределами main. Это делает их глобальными переменными, чего следует избегать, насколько это возможно. Они должны быть перемещены внутрь main, а также

  4. ofstream используются для вывода в файл, вы хотите, чтобы ifstream получил ввод из файла

3 голосов
/ 09 июня 2011

Вы не можете иметь некоторое время вне основного

int main ()
{
    ofstream infile("new.txt",ofstream::binary);
    while(infile.read((char *)(&r_ptr[r_count]),sizeof(Rooms)))
    {   
        r_count++;
    }
    infile.close(); 

    // some code here
    return 0;
}
...