Невидимо въвеждане на пароли?

Възможен дубликат:
Прочетете парола от std::cin

Искам да въвеждам cin>>, но когато въвеждат нещо, не искам то да е видимо за тях. Например, когато използвате passwd в unix, за да промените паролата си, където не се показва какво сте въвели. надявам се да е ясно какво питам. Благодаря ви предварително.


person Justin Yoder    schedule 30.08.2010    source източник
comment
Това звучи като конфигурация на конзолата.   -  person Leonid    schedule 31.08.2010
comment
Дубликат на stackoverflow.com/questions/1413445/read-a -password-from-stdcin   -  person tcrosley    schedule 31.08.2010
comment
Може ли ncurses да се използва за това? Знам, че това не е стандартната C++ библиотека, но може да е точно това, от което се нуждае OP. Бързо търсене разкрива, че използването на ncurses също може да бъде преносимо към Windows, ако се използва cygwin или pcurses.   -  person Emile Cormier    schedule 31.08.2010


Отговори (5)


От C++ FAQ Lite

This is not a standard C++ feature — C++ doesn't even require your system to have a keyboard or a screen. That means every operating system and vendor does it somewhat differently. Please read the documentation that came with your compiler for details on your particular installation.
person Leonid    schedule 30.08.2010
comment
RTFM е най-добрият отговор? Наистина ли? - person indiv; 31.08.2010

cin не е начинът да направите това, тъй като операционната система (обикновено) отразява стандартния вход. Това, което трябва да направите, е да управлявате ключовите събития на ниво операционна система.

person TreDubZedd    schedule 30.08.2010

Има getpass(3) за Unix-подобни системи, които ще направят това, което искате.

Въпреки това,

  1. Не е преносим (само за Unix системи).
  2. Той е остарял („Присъства в SUSv2, но е маркиран като НАСЛЕДЕН. Премахнат в POSIX.1-2001.“).

Няма начин да го направите със стандартен C или C++.

person Alex B    schedule 30.08.2010

Ако това, което искате, е нещо подобно на това, което правите, когато въвеждате паролата за влизане в кутия на linux, това поведение не може да бъде постигнато в C или C++. Ще трябва да използвате библиотека, специфична за платформата, за да направите това. По-конкретно, въвеждането от конзолата в C и C++ винаги се отразява в конзолата.

person Billy ONeal    schedule 30.08.2010

Накарайте го да открива натискания на клавиши. Помислете за това по следния начин: когато потребител натисне клавиша "A" във видео игра, програмата изпълнява код; не мислете за това като за получаване на информация. Мислете за това като за откриване на натискания на клавиши и добавяне на всяко натискане на клавиш към някаква структура от данни (напр. масив).

Запознат съм с функционалността в UNIX терминала, за която говорите, и тя не ви позволява да връщате назад или нещо подобно. Ако искате тази функционалност, просто направете това, което казах по-горе.

Ако искате да можете да връщате назад, въпреки че потребителят няма да може да види какво връща назад, можете да напишете код, който премахва последния елемент от масива, когато потребителят щракне назад.

Освен това всички останали са прави, когато казват, че ще трябва да програмирате това специфично за системата, на която го използвате.

И накрая, това може да не е сигурно, ако използвате това за парола и просто го хвърляте в масив.

person OOProg    schedule 30.08.2010