说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

请哪位高人帮忙完成啊

编辑:说三道四文库 发布时间:2018-06-24 07:27
HTML文档下载 WORD文档下载 PDF文档下载
我不知道怎么写到磁盘中去,还有我的排序的函数好象没起作用,请哪位高人帮忙指引一下啊!!先谢谢各位了!

//定义student类,重载《和》输入student信息,存到磁盘中,并按照SNO从小
//到大排序
#include<iostream.h>
#include<string.h>
#include<iomanip.h>
class student
{
private:
int sno;
char name[100];
int age;
char sex;
public:
//void save();
//void paixu();
int a();
friend  ostream& operator<<(ostream &out,student &m);
friend istream& operator>>(istream &in,student &m);
}stu[3];
int student::a()
{
return sno;
}

ostream& operator<<(ostream &out,student &m)
{
out<<m.sno<<"    "<<m.name<<"    " <<m.age <<"    "<<m.sex <<endl;
return out;
}
istream& operator>>(istream &in,student &m)
{

 cout<<"please put sno:";
 in>>m.sno;
 cout<<"please put name:";
 in>>m.name;
 cout<<"please put age:";
 in>>m.age;
 cout<<"please put sex:";
 in>>m.sex ;
 cout<<"               "<<endl;

return in;

}
void paixu ()
{

  student k;
for(int i=0;i<3;i++)
   for(int j=i+1;j<3;j++)
   if(stu[i].a()<stu[j].a())
   {
       k=stu[i];
   stu[i]=stu[j] ;
   stu[j]=k;
   }

}
void main()
{
student stu[3];
for(int i=0;i<3;i++)
    cin>>stu[i];
cout<<"~~~~~~~~~~~~~~~~~~~~~~~~~~~"<<endl;
for(int j=0;j<3;j++)
cout<<stu[j]<<endl;
cout<<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"<<endl;
    paixu();    
for(int k=0;k<3;k++)
cout<<stu[k]<<endl;

}
写到磁盘要使用
#include <fstream.h>

ifstream in("你的文件路径");
string s="edafsdfa";
fprinrtf(in,"the string yuo want to input %s",s);
或者使用freopen把stdout文件流定位到别的文件,MSDN例子

#include <stdio.h>
#include <stdlib.h>

FILE *stream;

void main( void )
{
   /* Reassign "stderr" to "freopen.out": */
   stream = freopen( "freopen.out", "w", stderr );

   if( stream == NULL )
      fprintf( stdout, "error on freopen\n" );
   else
   {
      fprintf( stream, "This will go to the file 'freopen.out'\n" );
      fprintf( stdout, "successfully reassigned\n" );
      fclose( stream );
   }
   system( "type freopen.out" );
}
为何重载>>and <<运算符呢?
菜鸟问一下
to UPCC(我是菜鸟):ifstream in("你的文件路径");是用来读磁盘文件的。
写文件应该是:ofstream out("你的文件路径");
呵呵,对的。。。
为何重载>>and <<运算符呢?
菜鸟问一下
--------------------
因为你所定义的类没有>>,<<之类的运算符,当然要重载为运算符函数了!
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘