0

例如,假设您从某处提取数据并将其放入字符串变量中,然后您想使用其中的数据作为另一个字符串名称:

int main(void){

   string strVar ="StringData"; //this is a string variable with text inside 

   cout<<strVar<<endl;    //displaying the variables contents


   string strVar.c_str() = "stuff in string variable 'StringData'"; //this uses what was inside of strVar to be the name of the new string variable

   cout<<StringData<<endl; //prints the contents of the variable StringData (who got its name from the data inside of strVar
}

//OUTPUT:
StringData
stuff in string variable 'StringData'

我知道您绝对不能以这种方式执行此操作,在此示例中,您必须在使用变量 StringData 之前事先知道 strVar 中的内容,但理论上我们可以这样做吗?

编辑:

谢谢大家,所以我从你们那里得到的基本上是不可能的,C++ 不是动态变量语言,我能得到的最接近的东西是映射(字符串,字符串)

4

4 回答 4

2

没有什么像你在想的那样明确,但也许你会对std::map? 听起来您想要的是键值对。

参考 std::Map -> http://www.cplusplus.com/reference/stl/map/

例子:

#include <map>
#include <string>
#include <iostream>
using namespace std;

int main(void)
{
    map<string, string> myMap;
    myMap.insert(pair<string, string>("StringData", "Stuff in StringData"));

    // Get our data
    cout << myMap["StringData"] << endl;

    return 0;
}
于 2012-06-25T04:15:10.110 回答
0

变量名仅在 C++ 编译时存在。最接近的方法是使用带有字符串键的地图。

于 2012-06-25T04:13:19.723 回答
0

我不确定你在问什么,但如果你想拥有“动态”变量名,那么你不能直接在代码中这样做。您将不得不使用一些地图类型的数据结构。看看你std::hash_set是否std::map可以使用标准库。

于 2012-06-25T04:14:57.710 回答
0

有些语言可以动态创建变量。C++ 不是其中之一;)

于 2012-06-25T04:17:22.277 回答