#include <iostream>
using namespace std;
class empleado {
public:
void asignar ();
void leer();
private:
char nombre [40];
int numemple;
};
void empleado::asignar()
{
cout<<"ingrese nombre de empleado";
cin>>nombre;
cout<<"ingrese numero de empleado:";
cin>>numemple;
}
void empleado::leer(){
cout<<"nombre de empleadoes :"<<nombre<<endl;
cout<<"numero de empleado es:"<<numemple<<endl;
}
int main (){
char nombre [40];
int numemple;
empleado emp_obj;
emp_obj.asignar();
emp_obj.leer();
}
Sabe alguien por que si dejo espacios en la lectura de el nombre, el programa continua y termina sin dejarme ingresar el número de empleado.
Supongo que, al igual que scanf, cin usa los espacios en blanco como separadores de datos. Cuando encuentra uno cree que ha llegado al final de la cadena esperada.
En C++, creo que para adquirir una cadena con espacios es con std::getline(std::cin, mi_cadena);
Cita de: MAFUS en 8 Marzo 2017, 12:23 PM
Supongo que, al igual que scanf, cin usa los espacios en blanco como separadores de datos. Cuando encuentra uno cree que ha llegado al final de la cadena esperada.
En C++, creo que para adquirir una cadena con espacios es con std::getline(std::cin, mi_cadena);
Para std::string, sí. Para char*, entonces será:
cin.getline(cadena, tamaño_cadena); // Lee hasta '\n'
// O
cin.getline(cadena, tamaño_cadena, caracter_delimitador); // Lee hasta el delimitador
O sea:
cin.getline(nombre, 40);
Ante todo gracias, en este programa puedo usar tu consejo. Dicho programa tiene una clase llamada publicación y se requiere guardar el titulo y el precio. Una forma de hacerlo fue así:
#include <iostream>
#include <string>
using namespace std;
class publicacion{
public:
void asignar();
void mostrar();
private:
char titulo [25];
float precio;
};
void publicacion::asignar()
{
cout<<"Ingrese el titulo:";
cin.getline(titulo,25);
cout<<"ingrese el precio:";
cin>>precio;
}
void publicacion::mostrar()
{
cout<<"Titulo del libro:"<<titulo<<endl;
cout<<"PRecio del libro:"<<precio<<endl;
}
int main (void){
char titulo;
float precio;
publicacion libro1_obj;
libro1_obj.asignar();
libro1_obj.mostrar();
}
Gracias por tu comentario MAFUS.