懂VC的进来

来源:百度知道 编辑:UC知道 时间:2024/05/26 20:03:03
从书上看的程序
student stud[5]={1001,"Li",85,1002,"Fun",97,1004,"Wang",54,1006,"Tan",76.5,1010,"ling",96};
fstream outfile("f1.dat",ios::out|ios::in|ios::binary );
if (outfile==0)
{
cout<<"打开失败!"<<endl;
exit(1);
}
outfile.write((char *) stud,sizeof(stud));
应该是正确的,并且可以在其他编译器上运行,可是VC却不行。必须把fstream改为ofstream我觉得是VC类库和标准的不太相符吧!ofstream中的类fstream中没有!谁能具体解释一下呢?

你所谓的标准是指什么呢?每个公司的产品都有各自的标准,不可能完全一致的,如果那样就成了抄袭了。
因为vc是兼容c++的,并不是等于c++。所以很多地方都和c++有些区别的。比如说读写文件,你查下MSDN就会发现vc里边有现成的类CFile,而且有一套完备的封装函数,所以说使用VC就应该按照微软推荐的方式来用,如果你不习惯,那就去用BCB或是linux c++吧,他们对c++的兼容性都远远胜过vc6.0的

和文件有关系的输入输出类主要在fstream.h这个头文件中被定义,在这个头文件中主要被定义了三个类,由这三个类控制对文件的各种输入输出操作,他们分别是ifstream、ofstream、fstream,其中fstream类是由iostream类派生而来,他们之间的继承关系见下图所示。

你的程序我用 VC2008 运行了一下没错啊... 不知你用的VC 的那个版本

#include <fstream>

#include <iostream>

using namespace std;

int main()

{

struct student

{

 int id;

 char name[20];

 double a;

};

 student stud[5]={1001,"Li",85,1002,"Fun",97,1004,"Wang",54,1006,"Tan",76.5,1010,"ling",96};

 fstream outfile("f1.dat",ios::out|ios::in|ios::binary );

 if (outfile==0)

 {

&