繁体   English   中英

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

[英]C++ string value as another strings name

如何在C ++中将变量值转换为别人的名字? 就像这个php片段中一样。

$string = 'testVar';

${$string} = 'test';

echo $testVar; // test

使用地图怎么样?

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

我不了解PHP,但我不认为您可以使用C ++做到这一点。 变量名在已编译的C ++程序中没有运行时表示形式,因此无法像这样在运行时加载其名称。

这似乎只能在原始语言位于内存中或至少语法树的某种表示形式的脚本语言中执行。

这不是您可以在C ++中执行的操作。 当您编译C ++代码时,有关丢失哪些名称函数和变量的信息会丢失(从技术上讲,它可以存储在符号表中,但这些仅用于调试目的)。 为了完成这样的事情,您需要使用一个映射或其他类似的数据结构,就像一个PHP数组。

听起来您可能要使用指针:

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM