我正在尝试创建一个循环,它将创建一个新变量,但也会自动更改变量的名称,例如增加值。不确定这是否可行,因为你不能拥有动态变量?
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;
}
这是我当前的代码,它充满了错误但希望足够可读,以便了解我正在尝试做什么。
标题不好,不知道还有什么可以称之为。
答案 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;
}