2011-04-30 3 views
0

코드의이 부분에 관해 도움이 필요합니다 ... schmoo에 두 개의 double을 전달해야합니다. 내가 이렇게한다면 "Schmoo (8.0,9.0);" 그것은 작동하지만 찾을 때 그것을 사용하면 오류가 발생합니다. 나는이 "add schmoo 8.0 7.0"과 같은 cin에서 입력을 읽어야합니다. 나는 실수를 두 번 추출하고, cin에서 각 항목을 올바르게 추출하는 방법을 생각합니다. 나는 그들이 입력되는 한 계속 할 필요가있다.C++ stdin에서 stdout으로 읽는 것을 도와주세요. 또한 연산자 오버로드

while(cin){ 
    string command1 = "add schmoo"; 
    string input; 
    cin >> input; 
    double a,b; 
    if(input == command1){ 
     cin >> a >> b; 
     Schmoo *a = new Schmoo(a,b); 
     c.insertFront(a); 
    } 
    string command2 = "throw mud"; 

    if(input == command2){ 
     cin >> a >> b; 
     c.throwMudAt(a,b); 
    } 

또한 나는이 opperator 과부하 도움이 필요합니다 :

ostream &operator<<(ostream &os, Schmoo &s){ 
    if(s.getMud() == 1){ 
    os << "Schmoo at (" << s.x << ", " << s.y << ") was hit mud " << mud << "time."; 
    } 
    os << "Schmoo at (" << s.x << ", " << s.y << ") was hit with mud" << mud << "times."; 
    return os; 
} 

내가 s.getMud과 관련이있다 오류()를 얻고을; 이전에는 포인터를 통해 진흙을 사용했지만,이 클래스는 포인터를 가진 모든 친구와 친구가 아닙니다. 하지만 getMud는이 클래스의 함수이며 getMud()를 어떻게 사용합니까? 이 문맥에서.

+2

코드를 올바르게 보이게하려면 4 칸만큼 들여 쓰거나 코드를 선택하고 텍스트 상자 위의'{}'버튼을 누릅니다. – Xeo

+0

코드에 문제가 있습니다 :'double a, b; cin >> a >> b; Schmoo * a = 새로운 Schmoo (a, b); – MFH

답변

1

cin은 첫 번째 공백이 발생할 때까지 읽습니다. 따라서 input 문자열은 "add schmoo"가 아닌 "add"가됩니다. 첫 번째 문자열을 더 잘 읽고 "추가"되어 있는지 확인한 후 다음 문자열을 읽은 다음 (더 많은 문자열을 schmoo에 추가하려는 경우) double을 읽습니다. 또는 명령을 "add_schmoo"로 변경하십시오.


과부하의 경우 클래스 Schmoo은 어떻게 정의되어 있습니까?

0

귀하의 문제는이 라인에서 주로오고있다 : 귀하의 의견은 add schmoo 8.0 9.0입니다

string input; 
cin >> input; 

경우 당신이 그것을 문자 읽기를 중단해야 할 때 어떠한 고체 표시를주지대로, 다음 cin >> input이 작동하지 않습니다.

+1

'cin'은 첫 번째 공간까지 읽을 것이므로'input'은 "add"만을 포함 할 것입니다. – Xeo

+0

나는 개인적으로 문자열로'cin'을 사용하지 않으므로 확실하지 않았습니다. :) 나는 보통 getline()을 대신 사용한다. – riwalk

+0

얼룩 식별은 무엇입니까? cin >> input >> input1; – adsderek