使用EOF函数作为条件

时间:2011-06-09 11:24:33

标签: c++ file eof

我正在尝试从项目中的文件导入数据,但我无法找到 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:'read':不是'std :: basic_ofstream&lt; _Elem,_Traits&gt;'

的成员

更新 非常感谢。代码终于修复了,这是最终的实现,

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 个答案:

答案 0 :(得分:3)

你不能在主要的

之外
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;
}

答案 1 :(得分:3)

您似乎有一两个语法问题:

  1. 你有一个函数或main之外的代码(while和infile命令),它们需要放入main或函数中。

  2. 您的第二个需要dodo{....}while(1),也可以永久运行

  3. 所有变量都在main之外定义。这使它们成为全局变量,尽可能避免这种情况。它们应该移到main

  4. ofstream用于输出到文件,您希望ifstream从文件中获取输入