C++ 如何将字符串转换为变量

C++ 如何将字符串转换为变量,c++,c++11,c++14,C++,C++11,C++14,我有一个函数,其中我接收字符串值 基于这个值,我想创建一个变量 Template<typename T> void func( std::string str , T value ) { if( str == "int" ) { int val = value; } if( str == "double" ) { double val = value; } if( str

我有一个函数,其中我接收字符串值

基于这个值,我想创建一个变量

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;

     }    
}
模板
void func(标准::字符串str,T值)
{
如果(str==“int”)
{
int val=值;
}
如果(str==“double”)
{
双val=值;
}
如果(str==“字符串”)
{
std:字符串val=值;
}    
}

是否有可能自动执行此函数,而不是使用大量的if条件?

您做得很好,创建了一个
模板函数来检查变量类型,然后创建该类型的变量

为此,c++11引入了
auto
,对于变量,指定要声明的变量类型将从其初始值设定项自动推断

#包括//std::cout
#include//std::string
#包括//以检查类型信息
样板
无效函数(T值){
auto val=value;//由编译器正确地自动推断类型(从c++11开始)。
std::cout d
func(“你好世界”);
返回0;
}

模板无效函数(T值){std::cout@L.F我想把字符串值转换成一个变量,std::cout仅供参考。你的代码有点奇怪,
T
是编译时已知的类型,但
str
在运行时已知。如果它们不匹配怎么办?@john基于str值,我想创建一个变量。@suman,这没有回答我的问题。支持你有
func(“str”,123);
?你期望发生什么?
#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;
}