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++类,我不允许在数组、向量或特殊对象中存储任何数据,那么只有级联,如果可以工作,预处理器宏也可以工作,但这绝对不是初学者的类似的帖子: