繁体   English   中英

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

[英]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";
}

Godbolt 链接

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM