C++使用字符串访问变量

Kni*_*pie 1 c++

假设我有一个包含6组的结构bbox,其中每组包含4个向量.我可以使用bbox.set1.vect1.push_back(foo)添加一个vector元素.但是,我正在从文件中读取数据,而我正在寻找一种将数据存储在向量中的优雅方法.使用带有索引i(1到6)和k(1到4)的double for()循环我尝试了以下(使用字符串连接):

string test1 = "bbox.set";
string test2 = ".vect";
string fin = test1 + to_string(i) + test2 + to_string(k);
fin.push_back(val);
Run Code Online (Sandbox Code Playgroud)

虽然代码编译得很好,但似乎没有任何事情发生.明确地写bbox.set1.vect1.push_back(foo)确实有效.这可以这样做吗?在另一个主题中,我读过C不支持在运行时更改/创建变量名,但在这里我只是尝试访问现有变量.

Frx*_*rem 6

不,C++不支持这一点,因为变量名在编译时被解析,这意味着在程序运行时,变量名本身就没有意义.(换句话说,该名称bbox实际上已被一组数字所取代,这些数字代表该变量名称所调用的对象.)

如果你真的需要这样的东西,你应该考虑使用一个容器std::map,你可以使用它来将字符串映射到对象.但是,您无法像变量一样访问它们,但您可以动态构建字符串以决定要获取哪个对象.