Как я могу преобразовать строку в переменную - PullRequest
0 голосов
/ 02 мая 2020

У меня есть функция, в которой я получаю строковые значения.

На основе значения, которое я хочу создать переменную.

Template<typename T>
void func( std::string str , T value )
{
    if( str == "int" )
     {
          int val = value;

     }

     if( str == "double" )
     {
          double val = value;

     }

    if( str == "string" )
     {
          std:string val = value;

     }    
}

возможно ли автоматизировать эту функцию, вместо того, чтобы иметь много условий?

1 Ответ

1 голос
/ 02 мая 2020

Вы отлично поработали, создали template function для проверки типа переменной, а затем создали переменную этого типа.

Для этого c ++ 11 ввел auto для переменных , указывает, что тип объявленной переменной будет автоматически выведен из ее инициализатора. c ++ auto

#include <iostream> // std::cout
#include <string> // std::string
#include <typeinfo> // to check type info

template <typename T>
void func(T value){
    auto val = value; // correctly auto deduced type by compiler(since c++11).

    std::cout << typeid(val).name() << std::endl; // check the auto deduced type info
}

int main(){

    // try
    func(12); // output-> i
    func(12.3); // output -> d
    func("Hello world");

    return 0;
}
...