Существует много примеров кода для программы паролей, которая скрывает вход со звездочкой. Эти программы работают, когда я компилирую их с помощью IDE CodeBlocks, выводя *
каждый раз, когда я печатаю букву.Как отобразить звездочку для ввода пароля в C++ с использованием CLion
Enter Password : ******
You entered : iiiiii
Process returned 0 (0x0) execution time : 6.860 s
Press any key to continue.
Однако, когда я использую CLion IDE, я могу увидеть буквы I тип:
Enter Password :iiiiii
******
You entered : iiiiii
Process finished with exit code 0
Может кто-то объяснить, почему эта разница существует между этими двумя Иды?
код, который я использую (я нашел его в Интернете) является:
#include <iostream>
#include <conio.h>
#include <stdlib.h>
using namespace std; //needed for cout and etc
int main()
{
START:
system("cls");
cout<<"\nEnter Password : ";
char pass[32];//to store password.
int i = 0;
char a;//a Temp char
for(i=0;;)//infinite loop
{
a=getch();//stores char typed in a
if((a>='a'&&a<='z')||(a>='A'&&a<='Z')||(a>='0'&&a<='9'))
//check if a is numeric or alphabet
{
pass[i]=a;//stores a in pass
++i;
cout<<"*";
}
if(a=='\b'&&i>=1)//if user typed backspace
//i should be greater than 1.
{
cout<<"\b \b";//rub the character behind the cursor.
--i;
}
if(a=='\r')//if enter is pressed
{
pass[i]='\0';//null means end of string.
break;//break the loop
}
}
cout<<"\nYou entered : "<<pass;
//here we can even check for minimum digits needed
if(i<=5)
{
cout<<"\nMinimum 6 digits needed.\nEnter Again";
getch();//It was not pausing :p
goto START;
}
return 0;
}
//Lets check for errors.
//You can even put file system.
Я знаю, что есть много вопросов, подобных этому, однако, ни один из них не может объяснить, почему это не так работающих при использовании среды CLION.
Вы должны использовать что-то вроде [ncurse] (https://en.wikipedia.org/wiki/Ncurses) –
Я на самом деле не используется ncurse, @EdHeal, так как бы Я делаю программу с ncurse? –