C++中基于变量名返回特定变量?
在函数输入中给定一个参数,是否可以返回具有该特定名称的变量 例如,如果您有以下代码:C++中基于变量名返回特定变量?,c++,C++,在函数输入中给定一个参数,是否可以返回具有该特定名称的变量 例如,如果您有以下代码: string returnsParameter(string parameter) { string a = "test"; string b = "test 2"; string c = "test 3"; return parameter; } 您运行了ReturnsArametra,有什么方法可以返回测试吗?我试着使用指针和引用变量,但不能使用非常量引用 有没有一种不使
string returnsParameter(string parameter)
{
string a = "test";
string b = "test 2";
string c = "test 3";
return parameter;
}
您运行了ReturnsArametra,有什么方法可以返回测试吗?我试着使用指针和引用变量,但不能使用非常量引用
有没有一种不使用映射的方法可以做到这一点?您可以使用std::map来实现这一目的。
创建映射字符串
并在其中添加一个测试对,并返回字符串[parameter]。
据我所知,不可能访问变量名。这是我的信念,我不完全确定您是否可以使用std::map来实现这一目的。
创建映射字符串
并在其中添加一个测试对,并返回字符串[parameter]。
据我所知,不可能访问变量名。这是我的信念,我不完全确定如果您不允许使用std::map,那么我担心您必须使用一组条件,请注意,您根本不需要创建变量:
string returnsParameter(string parameter)
{
if( parameter == "a" ) return "test";
if( parameter == "b" ) return "test 2";
if( parameter == "c" ) return "test 3";
return "???";
}
如果您不允许使用std::map,那么恐怕您必须使用一组条件,请注意,您根本不需要创建变量:
string returnsParameter(string parameter)
{
if( parameter == "a" ) return "test";
if( parameter == "b" ) return "test 2";
if( parameter == "c" ) return "test 3";
return "???";
}
如果您的密钥域仅以字母a~z形式存在,并且数据以代码形式固定,则可以 创建一个静态数组以按字符对其进行索引
如果您的密钥域仅以字母a~z形式存在,并且数据以代码形式固定,则可以 创建一个静态数组以按字符对其进行索引
任何解决方案都需要使用映射,至少在内部使用,因为系统必须使用映射来决定返回哪个键/值对,即使是使用变量名 您可以选择使用std::map,将值硬连接到if语句中,或者使用自己的查找表。但是请记住,您需要有一个默认的返回值,以防找不到键
string returnsParameter(string parameter)
{
vector<string> values =
{
"a", "test",
"b", "test 2",
"c", "test 3"
}
for(int i = 0; i < values.size(); i += 2 )
{=
if(values[i] == parameter) return values[i + 1];
}
return "Not Found";
}
任何解决方案都需要使用映射,至少在内部使用,因为系统必须使用映射来决定返回哪个键/值对,即使是使用变量名 您可以选择使用std::map,将值硬连接到if语句中,或者使用自己的查找表。但是请记住,您需要有一个默认的返回值,以防找不到键
string returnsParameter(string parameter)
{
vector<string> values =
{
"a", "test",
"b", "test 2",
"c", "test 3"
}
for(int i = 0; i < values.size(); i += 2 )
{=
if(values[i] == parameter) return values[i + 1];
}
return "Not Found";
}
如果参数==a,则返回a;重复三次?C++编译器通常不会在运行时存储变量名的信息,所以如果你想避免键入IFS,你就必须使用一些Meta编程,大概是MAXRO.NO。编译时变量名“消失”。我可以使用if语句,但代码实际上包含19个要返回的变量;我想知道有没有更简单的方法?我想使用一个映射,但是为了这个练习,这是一个内层的C++类,我不允许在数组、向量或特殊对象中存储任何数据。然后只有级联,如果可以工作,预处理器宏也可以工作,但这绝对不是初学者的类似帖子:如果参数==返回A;重复三次?C++编译器通常不会在运行时存储变量名的信息,所以如果你想避免键入IFS,你就必须使用一些Meta编程,大概是MAXRO.NO。编译时变量名“消失”。我可以使用if语句,但代码实际上包含19个要返回的变量;我想知道有没有更简单的方法?我想使用一个映射,但是为了这个练习,这是一个内层的C++类,我不允许在数组、向量或特殊对象中存储任何数据,那么只有级联,如果可以工作,预处理器宏也可以工作,但这绝对不是初学者的类似的帖子: