Dev - C++ - Contraseña en Dev c++

   
Vista:

Contraseña en Dev c++

Publicado por Byron (1 intervención) el 03/08/2015 05:07:14
Hola como estan, quería saber si alguien sabe como hacer un programa en dev c++ que pida una contraseña pero al escribir la contraseña aparezcan *** en lugar de la contraseña les agradezco su atención.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de vangodp

Contraseña en Dev c++

Publicado por vangodp (287 intervenciones) el 03/08/2015 16:10:51
Ni c ni C++ proporcionan una forma standar de hacer eso, así que tendrás que ingeniártelas tú mismo. Si buscas en google encontrarias soluciones como esas: http://www.cplusplus.com/articles/E6vU7k9E/, pero ninguna es estándar. Con lo de "estándar" digo que tendrás que recurrir "siempre" a librerías de terceros, librerías como la tan odiada/amada por muchos que es la conio.h(solo para winiceros), o windows.h(solo para winiceros), entre otras muchas que solo funcionan en linux y algunas otras tantas que sí funcionan en ambos sistemas, pero como puedes ver siempre usarás alguna lib no estándar. Elija la que te menos te duela como programador y "make happy". XD

Esta me pareció muy interesante si estas en windows:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#include <iostream>
#include <string>
#include <windows.h>
using namespace std;
 
 
string getpass ( const char *prompt, bool show_asterisk = true ) {
    const char BACKSPACE = 8;
    const char RETURN = 13;
 
    string password;
    unsigned char ch = 0;
 
    cout << prompt << endl;
 
    DWORD con_mode;
    DWORD dwRead;
 
    HANDLE hIn = GetStdHandle ( STD_INPUT_HANDLE );
 
    GetConsoleMode ( hIn, &con_mode );
    SetConsoleMode ( hIn, con_mode & ~ ( ENABLE_ECHO_INPUT | ENABLE_LINE_INPUT ) );
 
    while ( ReadConsoleA ( hIn, &ch, 1, &dwRead, NULL ) && ch != RETURN ) {
        if ( ch == BACKSPACE ) {
            if ( password.length() != 0 ) {
                if ( show_asterisk )
                    cout << "\b \b";
 
                password.resize ( password.length() - 1 );
            }
        } else {
            password += ch;
 
            if ( show_asterisk )
                cout << '*';
        }
    }
 
    cout << endl;
    return password;
}
 
 
 
int main() {
    const char *correct_password = "null";  // <- "null" es la contrasenha de prueba, si pones otra cosa fallará. ;)
 
    cout << "Teste 1: Asteriscos activados" << endl;
    string password = getpass ( "Por favor entre con el password: ", true ); // true muestra los asteriscos
 
    if ( password == correct_password )
        cout << "Password correcto" << endl;
    else
        cout << "Password incorrecto. Intente nuevamente" << endl;
 
    cout << "\nTeste 2: Asteriscos desactivados" << endl;
    password = getpass ( "Por favor entre con el password: ", false ); // false no muestra los asteriscos
 
    if ( password == correct_password )
        cout << "Password correcto" << endl;
    else
        cout << "Password incorrecto. Lo siento, fallaste." << endl;
 
    return 0;
}

;)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar