2016-08-09 2 views
1

일부 벡터가 포함 된 프로그램 마녀 클래스를 작성하고 싶습니다. 나는 ">>"오버로드 된 연산자와 나는이오버로드 >> 연산자, while 루프에서 벡터 입력

1 2 3 4

처럼, 한 줄을 입력 값을 넣을이 제 기능입니다

istream &operator>>(istream &in, Wielomian &w){ 
    double val; 
    w.stopien=0; 
    while(in>>val){ 
     w.tabw.push_back(val); 
     w.stopien++; 
    } 
    return in; 
}; 

I 돈 내가 잘못하고있는 것을 알지 못한다.이 함수는 루프를 끝내지 않을 것이다. 이것은 내 수업입니다

class Wielomian{ 

private: 
    int stopien; 
    vector<double> tabw; 
public: 
    Wielomian(){ 
     stopien=0; 
    } 
    Wielomian(int s, vector<double> t){ 
     tabw=t; 
     stopien=s; 
    } 
    Wielomian(Wielomian &w){ 
     this->stopien=w.stopien; 
     this->tabw=w.tabw; 
    } 

    friend istream &operator>>(istream &in, Wielomian &w); 
    friend ostream &operator<<(ostream &out, const Wielomian &w); 
}; 

감사합니다.

string inputStr; 
std::getline(in, inputStr); 

을하고 그것에서 모든 값을 추출 할 수있는 문자열을 구문 분석 : 당신은 그냥 같은 라인에서 모든 것을 읽고 싶다면

답변

1

당신은 while(in >> val) 대신 getline를 사용하여 시도해야합니다. 그렇지 않으면 while(in >> val)을 수행하는 경우 어떻게 든 입력을 종료해야합니다.

+0

물론 나는 그것을 놓쳤다. 나는 값을 다시 넣지 않기 때문에 루프를 종료해야한다. 스트림에서 Enter 키를 인식하는 방법이 있습니까? 내 루프 - 깨는 경우 수 있습니다. –

+0

새로운 라인에서 멈추고 싶다면'getline'을 사용하는 것이 좋습니다. 그런 다음 문자열을 사용하여 문자열을 구문 분석 할 수 있습니다. 이것 좀 봐 : http://stackoverflow.com/questions/9673708/tell-cin-to-stop-reading-at-newline – grigor

+0

예, 이것은 해결책 일 수 있습니다. 어쨌든, 고맙습니다, 지금 나는 무엇이 문제인지를 안다. 감사! –

관련 문제