C ++字符串值作为另一个字符串名称

时间:2009-05-17 02:15:52

标签: c++

如何在C ++中将vartiables值转换为其他名称?就像在这个php片段中一样。

$string = 'testVar';

${$string} = 'test';

echo $testVar; // test

5 个答案:

答案 0 :(得分:6)

使用地图怎么样?

#include <iostream>
#include <map>
#include <string>

using namespace std;

map<string, string> hitters;

hitters["leadoff"] = "Jeter";
hitters["second"] = "Damon";
hitters["third"] = "Teixiera";
hitters["cleanup"] = "Matsui";

string hitter = "cleanup";

cout << hitters[hitter] << endl;

答案 1 :(得分:3)

我不懂PHP,但我认为你不能用C ++做到这一点。变量名在编译的C ++程序中没有运行时表示,因此无法在运行时加载其名称。

这似乎只能在原始源代码在内存中的脚本语言中执行,或者至少是语法树的一些表示。

答案 2 :(得分:1)

这不是你可以在C ++中做的事情。编译C ++代码时,有关函数和变量名称的信息将丢失(从技术上讲,它可以存储在符号表中,但这些仅用于调试目的)。要完成这样的任何事情,您需要使用map或其他类似的数据结构,这更像是一个PHP数组。

答案 3 :(得分:1)

听起来你可能想要使用指针:

string testVar;
string *str = &testVar;
*str = "test";
cout << testVar << endl; // test

编译之后,C ++编译器会丢弃变量的原始名称等信息,因此您必须使用较低级别的构造来执行相同类型的操作。

答案 4 :(得分:0)

如果使用符号表编译程序,可以使用“readelf -s yourexecutable”(linux) 得到符号表。 然后使用变量名称输出grep,并使用“cut”命令从输出中获取地址。

readelf -s a.out | grep ' var$' | tr -s ' '| cut -d' ' -f3