如何在C ++中将vartiables值转换为其他名称?就像在这个php片段中一样。
$string = 'testVar';
${$string} = 'test';
echo $testVar; // test
答案 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