#include <cstdlib>
#include <iostream>
#include <vector>
#include <string>
#include <string.h>
using namespace std;
class Empleado {
private:
string m_nombre;
string m_provincia;
string m_trabajo;
int m_ID;
public:
void ImprimirInfo();
void Toma_Nombre( string nombre ) { m_nombre = nombre ;}
void Toma_Provincia( string provincia) { m_provincia = provincia ;}
void Toma_Trabajo ( string trabajo ) { m_trabajo = trabajo ;}
void Toma_ID ( int ID ) { m_ID = ID ;}
string Dame_Nombre( ){ return m_nombre ;}
string Dame_Provincia( ){ return m_provincia ;}
string Dame_Trabajo( ){ return m_trabajo ;}
int Dame_ID( ){ return m_ID ;}
};
void Empleado::ImprimirInfo( )
{
cout << "Nombre: " << m_nombre << '\n';
cout << "Provincia: " << m_provincia << '\n';
cout << "Puesto: " << m_trabajo << '\n';
cout << "Salario: " << m_ID << '\n';
}
Empleado Agregar_Nuevo()
{
Empleado nuevo_empleado;
string name;
string state;
string job;
int identification;
cout<<"\nIngrese su nombre: ";
scanf("%s",&name);
cout<<"\nIngrese su provincia: ";
scanf("%s",&state);
cout<<"\nIngrese su puesto: ";
scanf("%s",&job);
cout<<"\nIngrese su ID: ";
scanf("%d",&identification);
nuevo_empleado.Toma_ID(identification);
nuevo_empleado.Toma_Nombre(name);
nuevo_empleado.Toma_Provincia(state);
nuevo_empleado.Toma_Trabajo(job);
return nuevo_empleado;
}
int main()
{
string name;
string state;
string job;
int identification=0;
Empleado new_empleado;
vector <Empleado> v;
int menu=0;
while (menu!=6)
{
cout<<"-------Menu Principal------\n"<<endl;//just a menu
cout<<"1.Agregar Empleado"<<endl;
cout<<"2.Eliminar Empleado"<<endl;
cout<<"3.Modificar Empleado"<<endl;
cout<<"4.Imprimir Empleado"<<endl;
cout<<"5.Imprimir todos los empleados"<<endl;
cout<<"6.Salir"<<endl;
cout<<"\n En que opcion desea Ingresar: ";
cin>>menu;
switch(menu)
{
case 1:
new_empleado=Agregar_Nuevo();// I think here is the problem
cout<<"H"<<endl;
v.push_back(new_empleado);
cout<<"Agregado con exito"<<endl;
break;
case 2:
cout<<"\nIngrese el ID a eliminar: ";
scanf("%d",&identification);
for (int i=0;i< v.size();i++)
{
v.at(i).ImprimirInfo();
}
break;
case 3:
cout<<"Modificar Empleado"<<endl;
break;
case 4:
/*nuevo_empleado.Dame_Nombre();*/
break;
}
}
return 0;
cin.get();
}
好的人,我是C ++编程的新手。我对一个名为AgregarEmpleados()的方法有疑问。我已经试图解决这个问题很长一段时间没有结果。我做了一个双线评论说'#34;我认为这是问题所在。&#34;在哪里我认为问题是。
答案 0 :(得分:2)
您无法使用std::string
阅读scanf
。 scanf("%s", ...)
期望char*
,您不能简单地将指针传递给std::string
,这是一个非常不同的数据结构。快速解决方法是更改看起来像这样的行:
scanf("%s",&name);
到此:
std::cin >> name;
或者这个:
std::getline(std::cin, name);