Как присвоить значения элементам данных структуры - PullRequest
2 голосов
/ 28 мая 2020

У меня есть структура

struct MyStruct
{
    int intValue1;
    float floatValue2;
    std::string stringValue3;
} Structure;

Теперь, основываясь на вводе значений двух строк, я хочу присвоить значения элементам данных структуры:

std::string varName = "intValue1";
std::string varValue = "5";

На основе в двух строках "intValue1" должен получить значение 5

Structure.intValue1 = (int)varValue;

Можно ли написать функцию, которая автоматически присваивает значения структуре на основе входных строк, например:

 void SetData( std::string varName , std::string varValue );

1 Ответ

3 голосов
/ 28 мая 2020

Да, это возможно, используя оператор строкового преобразования . Вот пример минимализма c:

#include <string>
#include <iostream>
#define NAME_OF( v ) #v

struct MyStruct
{
    int intValue1;
    float floatValue2;
    std::string stringValue3;
} Structure;


int main()
{
  MyStruct A;

  std::string varName = "intValue1";
  std::string varValue = "5";

  auto var_name = NAME_OF(A.intValue1);

  if (varName.compare(var_name) != 0) {
    A.intValue1 = std::stoi(varValue);
  }
  std::cout << A.intValue1 << " " << varValue << std::endl;
}

Надеюсь, это поможет!

...