更改循环内的变量名称

时间:2016-02-21 07:45:09

标签: c++ dynamic

我正在尝试创建一个循环,它将创建一个新变量,但也会自动更改变量的名称,例如增加值。不确定这是否可行,因为你不能拥有动态变量?

if (cin.get() == '\n')
{
    m ++; // Add an integer to m
    string (1 + m); //Trying to name the string the value of m + 1, i.e 3
    cin.ignore():
    getline(cin, (1 + m))
    myfile << (1 + m) << endl;
}

这是我当前的代码,它充满了错误但希望足够可读,以便了解我正在尝试做什么。

标题不好,不知道还有什么可以称之为。

3 个答案:

答案 0 :(得分:2)

如果你试图重命名一个变量&#34;你会误解C ++。

C ++是一种编译语言,其中变量的名称仅作为处理它们的方式存在于源代码中,而不是在编译的程序中。

因此,您无法在运行时创建具有特定名称的变量 - 变量名称根本就不存在。

你可能想要某种容器将值映射到键,想到字典,你可以说&#34;对于这个整数值12,我存储字符串monkey&# 34;或者。看看std::map

现在,你现在真的没有多大意义;并尝试做一些事情,这些事情并不是C ++适用于以有序方式学习它的人的方式。我真的建议你购买一本C ++书籍或教程,然后从中开始。它会结束以保护你很多时间! Here's推荐的C ++书籍和资源列表。

答案 1 :(得分:1)

你不能。它在C ++中是不可能的。

然而,要在每次迭代中声明和初始化变量是可能的:

for (int i = 0; i != 10; ++i) {
        int var = i; // Declare 'var' and assign value of 'i' to it.  
}                    // 'var' object goes out of scope and is destroyed

名称从声明它们的位置开始显示,直到声明出现的范围结束。名称为scope,对象为lifetimes

答案 2 :(得分:0)

在C ++中最接近“重命名”的事情是使用新名称声明“旧命名”变量的引用。

int a = 2;
int &b = a;
//you can now call either `b` or `a` to get the value

无法动态创建新变量。正确的插入任何编译的语言名称这样做的方法是将值推入容器(array,map,stack..etc)。使用地图,您可以执行类似于您想要的操作,但它只是将字符串“映射”到值。

#include <map>
#include <string>
#include <sstream> //for int to string conversion

std::string stringify(int val)
{
  std::stringstream ss;
  ss << n;
  return ss.str();
}

int main()
{
  std::map<std::string, int> values;
  for (int i = 0; i < 10; i ++){
    values[stringify(i)] = i*100;
  }
  std::cout << values["1"]; // prints 100
  std::cout << values["9"]; // prints 900
  return 0;
}