Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: ankora45 en 2 Octubre 2012, 11:58 AM

Título: duda c++
Publicado por: ankora45 en 2 Octubre 2012, 11:58 AM
Hola veran me gustaria saber como hacer que cuando se le pida un numero al usuario para acceder a un menu no tenga que escribirlo, si no solo pulsarlo ej:
Código (cpp) [Seleccionar]
#include <iostream>

using namespace std;

int main()
{
    int num;
    cout<<"pulse 1 para acceder a menu1"<<endl;
    cout<<"pulse 2 para acceder a menu2"<<endl;
    cin>>num; /* aqui lee la variable pero tienes que escribirla y pulsar intro
                 y yo quiero que lo coja directamente al pulsar el numero en el
                 teclado */
    switch(num)
    {
        case '1': cout<<"ha accedido al menu 1"<<endl;
        break;
        case '2': cout<<"ha accedido al menu 2"<<endl;
        break;
    }
    return 0;
}


no se si sera con (stdin) y la biblioteca cstdio espero respuesta :D
Título: Re: duda c++
Publicado por: leosansan en 2 Octubre 2012, 13:47 PM
Cita de: ankora45 en  2 Octubre 2012, 11:58 AM
hacer que cuando se le pida un numero al usuario para acceder a un menu no tenga que escribirlo, si no solo pulsarlo
Una forma es mediante el uso de la función getch de la librería coni.h, incluida ya en Cod::Blocks o Dev.C++ -no hablo de la de borland-. NO es la mejor o más portable para otros compiladores, pero hace lo que quieres
Código (cpp) [Seleccionar]
#include <iostream>
#include<conio.h>
using namespace std;

int main()
{
    cout<<"pulse 1 para acceder a menu1"<<endl;
    cout<<"pulse 2 para acceder a menu2"<<endl;
    switch(getch ())
        {
            case '1': cout<<"ha accedido al menu 1"<<endl;
            break;
            case '2': cout<<"ha accedido al menu 2"<<endl;
            break;
        }
    return 0;
}

Yo también quedo a la espera de otras soluciones sin getch.
Saludos!
Título: Re: duda c++
Publicado por: rir3760 en 2 Octubre 2012, 15:33 PM
Utilizando solo C o C++ no es posible. La única solución es utilizar una biblioteca de terceros (como en tu ejemplo) o bien el API del sistema operativo (Mas información en MSDN: Consoles (http://msdn.microsoft.com/en-us/library/ms682010.aspx)).

Un saludo
Título: Re: duda c++
Publicado por: 0xDani en 2 Octubre 2012, 15:53 PM
Cita de: rir3760 en  2 Octubre 2012, 15:33 PM
Utilizando solo C o C++ no es posible. La única solución es utilizar una biblioteca de terceros (como en tu ejemplo) o bien el API del sistema operativo (Mas información en MSDN: Consoles (http://msdn.microsoft.com/en-us/library/ms682010.aspx)).

Un saludo

Para Linux/Unix: tengo entendido que es termios.h.

Saludos.