我有一個小菜單和子菜單的簡單程序。用戶從1-9中選擇並點擊進入。我希望代碼只讀取數字1-9,從標準輸入中刪除「\ n」。我試過這樣:cin.get()並省略換行char
#include <cstdio>
#include <iostream>
using std::cin;
using std::cout;
using std::endl;
class cProgram
{
private:
char W;
public:
char choice(void);
void choice(int _W);
void showSubeMenu1(void);
void showSubeMenu2(void);
void showMainMenu(void);
};
char cProgram::choice()
{ return W; };
void cProgram::choice(int _W)
{ W = _W; };
void cProgram::showMainMenu(void)
{
cout << "MAIN MENU:" << endl
<< "[1] option 1" << endl
<< "[2] option 2" << endl
<< "<0> quit" << endl
<< "Your choice: ";
choice(cin.get());
getchar();
}
switch (choice())
{
case '1': choice('n'); showSubeMenu1(); break;
case '2': choice('n'); showSubeMenu2(); break;
case '0': break; // EXITS the program
default: choice('n'); showMainMenu(); break;
}
// choice('n'); sets W to neutral char (not 1,2 or 0)
一切工作正常,直到用戶點擊「\ n」,而不是普通的鍵。 「正常」我的意思是不是「\ n」。所以,當用戶輸入時,必須再次輸入(連續兩次)。其他方式表現奇怪。
您的代碼不能編譯,它沒有一個main()函數,你根本沒弄清楚到底是什麼「怪異」的行爲,你的程序的展品(這可能會讓你知道什麼是錯的線索)。這足以成爲我身邊的「禁止」 – DevSolar 2010-01-06 10:51:05
在那裏,添加了includes和「using」聲明,將'printf()'改爲'cout',並在類聲明中修正了一個錯字。你仍然沒有'main()',所以我們不能像你那樣運行你的程序,但我會仔細看看'getchar();'並問自己在那裏做什麼...... – DevSolar 2010-01-06 11:02:05
你是對的。我肯定會在另一篇文章中使用你的小竅門。謝謝。 – qlf00n 2010-01-06 11:11:58