Как я могу изменить имя структуры на целое число? - PullRequest
0 голосов
/ 03 июня 2018

Я уже давно пользуюсь struct, но со мной всегда проблема.Смотрите этот пример: - `

#include <iostream>
struct Employee
{
    short id;
    int age;
    double wage;
};

void printInformation(Employee employee)
{
    std::cout << "ID:   " << employee.id << "\n";
    std::cout << "Age:  " << employee.age << "\n";
    std::cout << "Wage: " << employee.wage << "\n";
}

int main()
{
    Employee joe = { 14, 32, 24.15 };
    Employee frank = { 15, 28, 18.27 };
    // Print Joe's information
    printInformation(joe);

    std::cout << "\n";

    // Print Frank's information
    printInformation(frank);

    return 0;
}`

Этот код работает совершенно нормально, но когда, как я буду использовать строку вместо« Джо »и« Фрэнк ».Я пытался, но не получилось.Это код, над которым я работаю.

 '#include <bits/stdc++.h>
 using namespace std;
 struct People{
   string name;
   int id;
   int age;
   int wage;
   };                
int main(){

string iname;
int iid = 0;
int iage; 
int iwage;     
while(1){
 iid++;
 cout << "ID No." << iid << endl <<"Enter Name";
 std::getline(std::cin,iname);
 cout << "Enter your Age:-";
 cin >> iage;       
  cout << "Enter your Wage :-";
  cin >> iwage; 
  cout << "See your details."<<endl <<"Name"<<iname<< endl<< "ID."<< iid << 
   endl << "Age" << iage << endl<< "Wage" << iwage << endl;
  People a = static_cast<People>(iid);
    People a={iname,iid,iage,iwage};  
    std::cout << "Name:" << a.name << "\n";
 std::cout << "ID:   " << a.id << "\n";
 std::cout << "Age:  " << a.age << "\n";
std::cout << "Wage: " <<  a.wage << "\n";
    }
    return 0;
} 

Здесь пользователь вводит свои данные.Я хочу сохранить слишком много данных в виде структуры, поэтому я использовал «а».По моему мнению, он должен вычислить 1.age = (бла ..), 3.age = (бла ..) Пожалуйста, помогите мне.

Ответы [ 2 ]

0 голосов
/ 03 июня 2018

Вы также можете назначить другую переменную каждому сотруднику, string name;, затем сохранить сотрудников в векторе, а затем в цикле функций по сотрудникам, пока не будет найден сотрудник с таким именем:

#include <iostream>
#include <string>
#include <vector>

using namespace std;

struct Employee{
    string name;
    short id;
    int age;
    double wage;
};

vector<Employee> Employees;
void printInformation(string employee){
    for(int i = 0; i < Employees.size(); i++){
        if(Employees[i].name == employee){
            cout << "Name: " << Employees[i].name << "\n";
            cout << "ID:   " << Employees[i].id << "\n";
            cout << "Age:  " << Employees[i].age << "\n";
            cout << "Wage: " << Employees[i].wage << "\n";
        }
    }
 }

int main(){
    Employee joe = {"joe", 14, 32, 24.15 };
    Employee frank = {"frank", 15, 28, 18.27 };
    Employees.push_back(joe);
    Employees.push_back(frank);
    printInformation("joe");
    printInformation("frank");

    return 0;
}

Я думаю, что это лучше, чем использовать карту, потому что вы просто пишете printInformation("joe"), когда при использовании карты вы пишете printInformation(employees["joe"]).Вы решаете.

0 голосов
/ 03 июня 2018

Я думаю, вы ищете что-то вроде std :: map

http://en.cppreference.com/w/cpp/container/map

пример:

std::map<std::string, Employee> employees;
Employee joe = { 14, 32, 24.15 };
employees["joe"] = joe;

printInformation(employees["joe"]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...