![](/img/trans.png)
[英]Initialize struct having a char array member with a string of dynamic length
[英]naming a member of a struct with a string array
在我的一个项目中,我需要通过数组内的字符串调用结构的成员/属性(不知道正确的术语)。
注释行中的脂肪部分 //???? 是问题用户[i]。 members[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";
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.