gpt4 book ai didi

c++ - 用字符串数组命名结构的成员

转载 作者:行者123 更新时间:2023-12-01 14:46:53 28 4
gpt4 key购买 nike

在我的项目中,我需要通过数组内部的字符串调用结构的成员/属性(不知道正确的术语)。
注释部分中的胖部分/// ????是问题用户[i]。 成员[j] 是胡说八道,我知道,但我只是无法弄清楚那里到底是什么。
谢谢您的帮助:D

struct person {         // Eigenschaften des Eintrags
string name; //nachname
string vorname; //vorname
string telefon; // telfonnummer
};
const int numbr_struct_att = 3;
const string members[numbr_struct_att] = { "name","vorname","telefon" };


cout << setw(5) << left << "Index" << setw(20) << left << "Name" << setw(20) << left << "Vorname" << setw(20) << left << "Telefon" << endl; // Header
for (int i = 0; i <= usernum; i++) {
cout << setw(5) << left << i+1;
for (int j = 0; j < numbr_struct_att; j++) {
cout << setw(20) << left << users[i].members[j] // ?????
}
cout << endl;
}

最佳答案

创建一个字符串映射到成员指针。

#include <map>
#include <string>
#include <iostream>
struct person { // Eigenschaften des Eintrags
std::string name; //nachname
std::string vorname; //vorname
std::string telefon; // telfonnummer
};

// map names of variables to person member pointers to strings
std::map<std::string, std::string person::*> somemap{
{ "name", &person::name },
{ "vorname", &person::vorname },
};

// then just get the member pointers and call it on a instance of a person:
int main() {
person myperson{"my name"};
std::string I_choose_you = "name";
std::string persons_name = myperson.*somemap.find(I_choose_you)->second;
std::cout << persons_name << "\n";
}
Godbolt link

关于c++ - 用字符串数组命名结构的成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63798996/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com