2017-12-16 14 views
-2

私は時間と分の入力を受けるこの機能を持っています。区切り文字がコロンでない場合、エラーが発生します。時間が23より大きく、59より大きい場合も同じです。私の現在のループでは、while boolは常に真であるようです。私は何を間違えたのですか?可能な限り何かが変わるのを見ることはできません。あなたはこれを解決するには、このようなwhileループでにstringstreamを持っていることが無限ループに入って一旦コロンの値を設定する機能でwhileループは常に真となります。C++

int delaString(string &samtalStart, int &timmarStart, int &minuterStart) { 
     istringstream is(samtalStart); 
     char colon; 
     getline(cin, samtalStart); 
     is >> timmarStart >> colon >> minuterStart; 
     while (colon != ':' || timmarStart > 23 || minuterStart > 59) { 
      cout << "Inkorrekt inmatning, var vänligen skriv in en timme mellan 00-23 och minuter mellan 0-59 i formatet tt:mm.\n" << endl; 
      getline(cin, samtalStart); 
     } 
     // is >> timmarStart >> colon >> minuterStart; 

    return(timmarStart, minuterStart); 
} 
+0

ヒント:ここで新しい入力を調べますか? – molbdnilo

+0

そして 'return(timmarStart、minuterStart)'は何を期待していますか? (ヒント: 'minuterStart'を返します。) – molbdnilo

+0

@molbdniloあなたはwhileループの前にifを使うべきですか? – Thesar

答えて

1

int delaString(string &samtalStart, int &timmarStart, int &minuterStart) { 

     char colon; 
     getline(cin, samtalStart); 
     istringstream is(samtalStart); 
     is >> timmarStart >> colon >> minuterStart; 
     while (colon != ':' || timmarStart > 23 || minuterStart > 59) { 
      cout << "Inkorrekt inmatning, var vänligen skriv in en timme mellan 00-23 och minuter mellan 0-59 i formatet tt:mm.\n" << endl; 
      getline(cin, samtalStart); 
      istringstream iss(samtalStart); 
      iss >> timarStart >> colon >> minuterStart; 
     } 
     // is >> timmarStart >> colon >> minuterStart; 

    return(timmarStart, minuterStart); 
} 

・ホープ、このことができます

+0

問題は私がistringstreamを書いていないことでした。(samtalStart); getlineの下で:) – Thesar

+0

はいthats正しい@ Thesar。これがupvoteを受け入れて受け入れるのを助けたら –

+0

私はそれを受け入れるために10分を待たなければならなかった:)ありがとう – Thesar

関連する問題