c++類中重載輸出和輸入符號的時候如何處理枚舉數據
#ifndef STUDENT_H
#define STUDENT_H
#include <iostream>
#include <string>
enum SCI{English,Maths,Chinese,no};
class student
{
public:
student(){science = English;scold =0.0;std::cout << "這是不帶參數的" << std::endl ;};
friend std::istream& operator>>(std::istream& , student&);
friend std:stream& operator<<(std:stream& , const student&);
~student(){};
private: std::string snumber; //學號 SCI science; //學科 double scold; //分數inline std::istream& operator >> ( std::istream& in, student& rhs){ std:: string i; in >> rhs.snumber>> i >> rhs.scold ; if(in) { if(i == " Chinese") rhs.science = Chinese; if(i == "Maths") rhs.science = Maths; if (i == "Englishi") rhs.science = English; else rhs.science = no; } return in; }inline std:stream& operator << (std:stream& out , const student& lhs){ out << lhs.snumber << "\t" << lhs.scold << "\t "; switch(lhs.science) { case English : std::cout << " English" << std::endl ; break; case Maths : std::cout << " Maths" << std::endl ; break; case Chinese: std::cout << " Chinese" << std::endl; break; //枚舉型輸出 default :break; } return out;}
#endif;
student s1; cin >> s1 ; cout << s2 ;}
結果科目的輸出項沒有,我估計是枚舉數據那出錯了,誰幫我看下。還有這個程序我在VC++6.0中運行沒有錯誤。
#define STUDENT_H
#include <iostream>
#include <string>
enum SCI{English,Maths,Chinese,no};
class student
{
public:
student(){science = English;scold =0.0;std::cout << "這是不帶參數的" << std::endl ;};
friend std::istream& operator>>(std::istream& , student&);
friend std:stream& operator<<(std:stream& , const student&);
~student(){};
private: std::string snumber; //學號 SCI science; //學科 double scold; //分數inline std::istream& operator >> ( std::istream& in, student& rhs){ std:: string i; in >> rhs.snumber>> i >> rhs.scold ; if(in) { if(i == " Chinese") rhs.science = Chinese; if(i == "Maths") rhs.science = Maths; if (i == "Englishi") rhs.science = English; else rhs.science = no; } return in; }inline std:stream& operator << (std:stream& out , const student& lhs){ out << lhs.snumber << "\t" << lhs.scold << "\t "; switch(lhs.science) { case English : std::cout << " English" << std::endl ; break; case Maths : std::cout << " Maths" << std::endl ; break; case Chinese: std::cout << " Chinese" << std::endl; break; //枚舉型輸出 default :break; } return out;}
#endif;
student s1; cin >> s1 ; cout << s2 ;}
結果科目的輸出項沒有,我估計是枚舉數據那出錯了,誰幫我看下。還有這個程序我在VC++6.0中運行沒有錯誤。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.