2014-02-06 42 views
0

我用cin.get()讓程序暫停並等待用戶輸入,並且它工作正常。當我把它放在if語句中時,它只是跳過那個「等待」期並繼續使用代碼?我該如何解決這個問題。這是不工作的部分。cin.get();當我把它放在一個if語句中不起作用

do 
    { 
     cout << "\n\n\nEnter the number of one of the following and I will explain!\n"; 
     cout << "1.integer 2.boolian 3.floats 4.doubles 5.character"; 
     cout << "\n\n[when you are done type 'done' to continue]\n\n"; 
     cin >> option; 

     if (option = 1); 
     { 
      cout << "\nInteger is the variable abbreviated as 'int' this allows C++ to only"; 
      cout << "\nreadwhole and real numbers \n\n"; 
      cin.get(); //this is the part where it just skips.. it should wait 
     } 

    } while (var = 1); 
+0

由於@ 0x499602D2指出了我的答案的評論,你有一堆其他問題。確保你閱讀了這些評論。 –

回答

1

的問題是,cin >> option將提取任何整數輸入流中,但會留下下面的換行符(這是有從擊中鍵入值後進入)。當你做cin.get()時,它只是提取那個已經存在的換行符。像這樣的許多其他問題,解決的辦法是清空你已經提取到option後的輸入流:在這裏你應該比較平等(==

cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); 

您同時還使用分配(=)。

+0

+1此外,'while(var = 1)'和'if(option = 1);'。 :) – 0x499602D2

+0

@ 0x499602D2謝謝,沒有注意到。添加到我的答案。 –

+0

沒問題。但他在'if(option = 1);'中也有分號 – 0x499602D2