elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Únete al Grupo Steam elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Duda sobre algunas funciones de C++
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Duda sobre algunas funciones de C++  (Leído 2,489 veces)
vojok

Desconectado Desconectado

Mensajes: 28


Ver Perfil
Duda sobre algunas funciones de C++
« en: 2 Enero 2016, 17:01 pm »

Hola, estoy armando un programita en C++ sobre el control de alumno (lo armo para mi) y me surge un problema que cuando quiero guardar el nombre y apellido separado por un espacio no me lo guarda con Cin ,entonces estuve buscando y probe con Cin.getline(variable,longitud,caracter de fin); pero tampoco me funciona me tira error como que no es standar y no se que mas , entonces probe con getline(cin,variable); y este me funciono pero estuve buscando y no se bien para que sirve estas funciones, alguien me podria aclararlas?:

Cin.getline();

getline(cin,variable);//no entiendo para que va el cin en el primer parametro ni cual es la funcion

cin.get();//este ultimo lo vi mucho para pausar el programa pero no se su verdadera funcion.

getch();//esto me parece que es para C


En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Duda sobre algunas funciones de C++
« Respuesta #1 en: 2 Enero 2016, 17:16 pm »

Empezando por getline: http://www.cplusplus.com/reference/string/string/getline/
Código
  1. getline(istream& is, string& str);
Guarda lo leído hasta el salto de línea (o hasta el delimitador, si se lo pones). Lo guarda en el segundo parámetro.
El primer parámetro, es un stream de entrada. Por ejemplo, cuando escribes en consola y pulsas enter, envías la cadena al streaming de entrada del programa ("cin" es un objeto que maneja el streaming de entrada por defecto)
Así pues, de forma resumida y usando tu ejemplo, le dices que lea de "cin", y lo deposite en "variable"

Luego, cin.getline, o más precisamente, el método getline de los objetos "istream", hace lo mismo que la función getline anterior, pero en este caso, los almacena en una cadena de tipo "char*", en vez de en una string. Si utilizas C++, salvo que sea necesario, te recomiendo usar la anterior: "getline(cin, t)"

Mientras que getline obtiene todos los caracteres hasta el delimitador, get obtiene solo 1 caracter.
Información más detallada, la tienes en http://www.cplusplus.com/reference/istream/istream/get/

No se recomienda el uso de getch puesto que no es estándar. Su función es devolver un caracter correspondiente a la siguiente pulsación de tecla (no requiere pulsar enter)


En línea

vojok

Desconectado Desconectado

Mensajes: 28


Ver Perfil
Re: Duda sobre algunas funciones de C++
« Respuesta #2 en: 2 Enero 2016, 17:28 pm »

muchas gracias por responder y tomarte el tiempo de explicarlo , ahora me surgio un problema cuando le pongo el getline() me saltea la linea para poner el nombre y apellido y se va a la otra columna fecha no se que estoy haciendo mal ,la columna los manejo con gotoxy aca el codigo:

Código:

class Menu
{
private:
    char sal;
    string nombre,fecha,nivel;
    int clases,seminario,abono;

    public:

        void NuevoAlumno();
        void Lista_Alumno();
        void Modificar_Alumno();
        void Borrar_alumno();
        void Salir();

};

void Menu::NuevoAlumno()
{
    system("cls");
    gotoxy(2,5);
    cout <<"Nombre y apellido:"<<endl;

    gotoxy(27,5);
    cout <<"Fecha:"<<endl;


    gotoxy(43,5);
    cout <<"Clases:"<<endl;

    gotoxy(55,5);
    cout <<"Seminario:"<<endl;


    gotoxy(70,5);
    cout <<"Nivel:"<<endl;


    gotoxy(87,5);
    cout <<"Abono:"<<endl;



    gotoxy(2,7);
    getline(cin,nombre);//aca me saltea la linea y va directo a que ponga la fecha

    gotoxy(27,7);
    cin>>fecha;

    gotoxy(43,7);
    cin>>clases;

    gotoxy(55,7);
    cin>>seminario;

    gotoxy(70,7);   
    getline(cin,nivel);//lo mismo que en el nombre me salta y va directo a abono

     gotoxy(87,7);
    cin>>abono;



}

En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Duda sobre algunas funciones de C++
« Respuesta #3 en: 2 Enero 2016, 17:43 pm »

He visto que usas "cin>>" en algunos puntos. Hay unt ema importante.
"cin>>" coge de la entrada caracteres hasta X punto. Si tú introduces "78456\n", va a leer el entero 78456 (en caso de que hagas "cin>>int" claro). El "\n" ese va a quedar en el buffer. Esto implica que la siguiente llamada a getline va a leer hasta el "\n", es decir, nada. Siquiera va a pedir entrada por teclado.

Visto el aspecto técnico, hay formas de arreglarlo:
[ul]
  • Colocar después de cada "cin>>" un cin.ignore() para que ignore el salto de línea. Si no te fuera, podrías poner "cin.ignore(2), para que ignore 2 caracteres (por si acaso, vaya)
  • No utilizar "cin>>". Sé que es práctico, pero este es un problema común. La opción, sería leer siempre con getline, y si necesitas interpretar un entero, podrías poner:
Código
  1. string t;
  2. getline(cin, t); // Leemos el número. Ej: 542
  3. int n = stoi(t); // Convertimos string a int
La función stoi: http://www.cplusplus.com/reference/string/stoi/
También tienes para convertir a float: stof
En línea

vojok

Desconectado Desconectado

Mensajes: 28


Ver Perfil
Re: Duda sobre algunas funciones de C++
« Respuesta #4 en: 2 Enero 2016, 17:54 pm »

Muchisimas gracias ,me salvaste de romperme la cabeza con la mesa jeje ,llevaba rato con este tema y no encontraba con la solucion y era tan facil jeje, muchas gracias.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
duda sobre estructuras y funciones
Programación C/C++
asdavid 3 2,588 Último mensaje 29 Noviembre 2012, 00:01 am
por durasno
Duda sobre ficheros en funciones
Programación C/C++
muymuyperdido 4 2,648 Último mensaje 23 Diciembre 2012, 15:43 pm
por muymuyperdido
Duda sobre funciones inline.
Programación C/C++
OmarHack 7 4,028 Último mensaje 28 Marzo 2013, 17:04 pm
por OmarHack
duda sobre funciones
Programación C/C++
0xFer 3 2,457 Último mensaje 20 Abril 2015, 11:43 am
por Gh057
Duda sobre operadores y funciones « 1 2 »
Programación C/C++
Luxus01 19 6,868 Último mensaje 12 Septiembre 2016, 15:31 pm
por ivancea96
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines