none
请问我有e盘为何没在e盘输出abc。txt RRS feed

  • 问题

  • 下面程序包括 【三学生.cpp主程序,学生头文件和cpp文件,学生的派生类masterstudent和他的cpp文件】学生的头文件和cpp文件可输出学生的姓名,学号,成绩3项

    masterstudent的头文件和cpp文件可输出学生的姓名,学号,成绩,类别4项,---要在主文件输出一个学生,两个研究生的数据,要求我的程序分成五个部分三个cpp文件,两个头文件, 请问我有e盘为何没在e盘输出abc。txt,请版主试试代码。

    //student.h
    #include "stdafx.h"
    #include<iostream>
    #include<string>
    #ifndef STUDENT_H
    #define STUDENT_H

    using namespace std;
    class student
    {public:
     student(char* ps,unsigned int num,double g)
     { strcpy(pname,ps);
     uid=num;
     grade=g;
     }
      virtual void display(ostream &out);
      protected:
     char pname[20];
     unsigned int uid;
     double grade;

    };
    ostream & operator<<(ostream &out,student &st);
    #endif
    //student.h
    //student.cpp
    #include "stdafx.h"//1
    #include<iostream>
    #include<iomanip>
    #include<fstream>
    #include<string>//5
    #include"student.h"
    using namespace std;
    void student::display(ostream &out)//7
    {out<<setiosflags(ios::left)<<setw(20)<<pname<<uid<<","<<setiosflags(ios::right)<<setw(4)<<grade;}

    ostream& operator<<(ostream &out,student &st)//10
    {st.display(out);
    out<<endl;
    return out;
    }
    //student.cpp
    //masterstudent.h
    #ifndef MASTERSTUDENT_H
    #define MASTERSTUDENT_H

    #include "stdafx.h"
    #include<iostream>
    #include"student.h"
    using namespace std;
    class masterstudent:public student
    {public:
       masterstudent(char* ps,unsigned int num,double g,char t):student(ps,num,g),type(t)
       {}
        
    void display(ostream &out);
    protected:
     char type;
    };
    #endif
    //masterstudent.h
    //masterstudent.cpp

    #include "stdafx.h"
    #include"masterstudent.h"
    #include<fstream>
    using namespace std;
    void masterstudent::display(ostream &out)
    {student::display(out);
    out<<","<<type;
    }
    //masterstudent.cpp
    // 三学生.cpp : 定义控制台应用程序的入口点。
    //

    #include "stdafx.h"
    #include<fstream>
    #include"student.h"
    #include"masterstudent.h"
    #include<iostream>
    using namespace std;
    int _tmain(int argc, _TCHAR* argv[])
    {ofstream outfile("e:\abc.txt",ios::out|ios::binary);
    student s1("dill dee",12567,3.5);
    masterstudent s2("werrr fff",12667,4.1,'a');
    masterstudent s3("pffffr hhh",12579,3.1,'b');


    outfile<<s1;
    outfile<<s2;
    outfile<<s3;
    outfile.close();
     return 0;
    }

    //三学生.cpp

    2011年3月8日 7:51

答案

全部回复

  •  ofstream outfile("d:\abc.txt",ios::out|ios::binary);

    -> ofstream outfile("d:\\abc.txt",ios::out|ios::binary);


    麻烦把正确答案设为解答。
    2011年3月8日 8:11
    版主
  • -> ofstream outfile("d:\\abc.txt",ios::out|ios::binary);


    为何要两个斜杠\\
    2011年3月8日 8:26
  • #ifndef STUDENT_H
    #define STUDENT_H

    另外student。h宏定义(为何条件预编译是要用大写字母)

    2011年3月8日 8:45
  • \在字符串里是用来表示转译字符的。因为有些字符无法用C++语法直接表达。

    例如创建字符串"abc"

    理解为char* p = ""abc"";但是显然这个会报错。则需要转译字符

    \"代表双引号。

    char* p = "\"abc\"";

    这样字符串p就是"abc"了,但是\被认为与其他字符一起表示转译。所以\自己也需要使用\\来表示。

    所以需要使用\\表示实际意义的\


    麻烦把正确答案设为解答。
    2011年3月8日 8:46
    版主
  • 谢谢斑竹,

    #ifndef STUDENT_H
    #define STUDENT_H

    另外student。h宏定义(为何条件预编译是要用大写字母)

    2011年3月8日 8:50
  • 没有要求必须要大写。只是为了容易识别,命名规则而已。


    麻烦把正确答案设为解答。
    2011年3月8日 9:07
    版主
  • #ifndef student.h

    #define student.h

    难道这样也对嘛?谢谢请回答。

    2011年3月8日 9:11
  • 不能有"."
    麻烦把正确答案设为解答。
    2011年3月8日 9:29
    版主
  • 没有要求必须要大写。只是为了容易识别,命名规则而已。


    条件预编译命名规则在哪里有
    2011年3月8日 12:32