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;
}