2017-04-06 1 views
0

파일에서 객체를 쓰고 읽는 데이 과제가있었습니다. 그러나 사용자 입력에 의해 특정 클래스의 객체를 만드는 방법은 얻을 수 없습니다. 여전히 CPP를 배우고 있습니다. 여기에 내 코드가 나는 아이디어가 있지만 그것이 작동하는지 안다. 버스 b1 (var1, var2, var3, var4) 같은 개체를 만듭니다. 작동합니까?사용자로부터 입력을 받아 특정 클래스의 객체를 만드는 방법

class Bus 
{ 
    private: 
     int busno; 
     string to; 
     string from; 
     float time; 
    public: 
     Bus() 
     { 
      busno=0; 
      to=""; 
      from""; 
      time=0.0; 
     } 
     Bus(int busno,string to,string from,float time) 
     { 
      this->busno=busno; 
      this->to-to; 
      this->from=from; 
      this->time=time; 
     } 
     void Write() 
     { 

      fstream file; 

      file.open("output.txt"); 
      file.fseekp(0,ios::end); 
      file.write((char*)this,sizeof(Bus)); 
      file.close(); 

     } 
     void Read() 
     { 
      fstream file; 
      file.open("output.txt"); 
      file.fseekg(0,ios::beg); 
      while(file.read((char*)this,sizeof(Bus))); 
      { 
       cout<<"The bus no is "<<busno; 
       cout<<"The bus will run from "<<from; 
       cout<<"The bus will run till "<<to; 
       cout<<"The bus will run at time "<<time; 

      } 
      file.close(); 
     } 

}; 
int main() 
{ 
int ch; 
int busno; 
string to,from; 
float time; 
    while(1) 
    { 


     switch(ch) 
     { 
      case 1: 
       Bus b1(1234,x,y,19.30); 
       Bus.Write(); 
       break; 
      case 2: 
       Bus.Read(); 
       break; 
     } 
    } 

return 0; 
} 
+0

개체를 읽고 쓸 수는 없습니다. 전에 serialize해야합니다. –

답변

0

이 컴파일이 수행됩니까? 그것은 그 것처럼 보이지 않습니다.

어디에서 'ch'값을 얻을 것으로 기대하십니까?

case 문에서 인스턴스화 할 수 없습니다. 적어도 중괄호 사이에 case 문 내용을 묶어야합니다.

멤버 함수 호출은 'b1.Write();'와 같아야합니다.

마지막으로 바이너리 데이터를 쓰고 다시 읽는 것이 효과적 일 수 있지만 이식성이없고 깨지기 쉽습니다. 서로 다른 컴파일러 간에는 작동하지 않을 수 있으며, 빅 엔디안과 스몰 엔디안 사이에서 거의 확실하게 작동하지 않을 것입니다.

+0

답변 주셔서 감사합니다. 그것은 내 문제를 해결했습니다. 나는 대답을 게시하는 동안 스위치 케이스의 입력 출력 부분을 생략했습니다. –

관련 문제