尽信书不如无书

来源:互联网 发布:抑郁症 知乎 编辑:程序博客网 时间:2024/05/05 02:28

#include <iostream>
#include <fstream>
using namespace std;
struct student
{
    char name[20];              //此处换成小强课本上的 string name; 会出现error C2679
    int num;
    int age;
    char sex;
};

int main()
{
student stud[3];
int i;
ifstream infile("stu.dat",ios::binary);     //nocreat??? 切记,没有中间的等号ifstream infile=("stu.dat",ios::binary);
    if (!infile)
{
     cerr<<"Open error!"<<endl;
     abort();
    }
    for ( i=0;i<3;i++)

   infile.read((char *)&stud[i],sizeof(stud[i])); //切记,没有中间的等号infile.read=((char *)&stud[i],sizeof(stud[i]));

infile.close();
for ( i=0;i<3;i++)
{
   cout<<"Name:"<<stud[i].name<<endl;
     cout<<"num:"<<stud[i].num<<endl;
   cout<<"age:"<<stud[i].age<<endl;
     cout<<"sex:"<<stud[i].sex<<endl;
   cout<<endl;
}
return 0;
}

//如果要用到两次变量i,不可在22行和26行(上面程序中的两个for循环处)两处定义两次。

 

//上方红字标示处就是引起error C2679出错的地方。

//由此本帅怀疑string在C++中的合法性,加上前几天所发贴后面各位朋友的跟帖,更加怀疑小强的正确性!