2010-08-30 109 views
3

可能重複:
Read a password from std::cin密碼的隱形輸入?

我想CIN >>輸入,但是當他們輸入的東西,我不希望它顯示給他們。就像當你在unix中使用passwd來更改你的密碼時,它不會顯示你輸入的內容。我希望很清楚我在問什麼。先謝謝你。

+0

這聽起來像一個控制檯配置。 – Leonid 2010-08-30 22:24:56

+3

重複的http:// stackoverflow。com/questions/1413445/read-a-password-from-stdcin – tcrosley 2010-08-30 22:28:34

+0

ncurses可以用於這個嗎?我知道這不是標準的C++庫,但它可能正是OP所需要的。快速搜索顯示,如果使用cygwin或pcurses,則使用ncurses也可以移植到Windows。 – 2010-08-30 22:38:42

回答

1

如果你想要的是一樣的東西,當你輸入登錄到Linux機器的密碼,您做什麼,這種行爲不能用C或C實現++。你將不得不使用平臺專用庫來做到這一點。更具體地說,C和C++中的控制檯輸入總是回顯給控制檯。

2

cin是不是這樣做的方法,因爲操作系統(通常情況下)相呼應標準輸入。您需要做的是在操作系統級別處理關鍵事件。

6

C++ FAQ Lite

這不是一個標準的C++的功能 - C++甚至不需要你的系統有一個鍵盤或屏幕。這意味着每個操作系統和供應商都會有所不同。 有關特定安裝的詳細信息,請閱讀編譯器隨附的文檔。
+5

RTFM是最佳答案?真? – indiv 2010-08-30 23:04:17

+0

@indiv - 經常,是的。 – 2010-08-30 23:36:48

2

getpass(3)類Unix系統,這將做你想做的。

然而,

  1. 這不是便攜式(僅適用於Unix系統)。
  2. 它棄用(「目前在SUSv2,但標記的遺產。在POSIX.1-2001刪除了。」)。

沒有辦法用標準C或C++這樣做。

0

它檢測到按鍵。這樣想:當用戶在視頻遊戲中按下'A'鍵時,程序運行代碼;不要把它當作接受投入。可以把它看作檢測擊鍵並將每個按鍵添加到某些數據結構(例如數組)。

我對UNIX終端的功能很熟悉,你所說的並不允許你退格或任何東西。如果你想要這個功能,就按照上面所說的去做。

如果你想能退格,雖然用戶將無法看到他們退格鍵,您可以編寫代碼,當用戶點擊退格鍵,消除數組的最後一個元素。

另外,當他們說你需要對你正在運行的系統進行特定的編程時,其他人都是正確的。

最後,如果您使用密碼並將其引入數組中,則這可能不安全。