**指我发现下面的解决方案,但仍然用户必须输入多少位数
他/她将进入。例如,如果用户输入4位数代码然后输入数组 大小应自动为4. **
int* a = NULL; // Pointer to int, initialize to nothing.
int n; // Size needed for array
cin >> n; // Read in the size
a = new int[n]; // Allocate n ints and save ptr in a.
for (int i=0; i<n; i++) {
a[i] = 0; // Initialize all elements to zero.
}
. . . // Use a as a normal array
delete [] a; // When done, free memory pointed to by a.
a = NULL; // Clear a to prevent using invalid memory reference.
答案 0 :(得分:1)
虽然你的问题有点不清楚,但这就是我带走的东西。用户必须保持输入数字,并假设用户输入4位数,然后应创建4个整数的数组。要模仿这个,一个很好的选择是使用std::vector
,如下所示:
std::vector<int> a;
for (int x; std::cin >> x;)
{
a.push_back(x); // push_back adds a new element to the vector.
}
这大大简化了代码,并阻止您手动处理指针。
如果您的目标是直接读取要从中提取数字的整数,则可以执行以下操作:
int input = 0;
std::cin >> input;
std::string inputString = std::to_string(input);
std::vector<int> a;
for (const auto& digit : inputString)
{
a.push_back(std::atoi(digit)); // Convert and add the digit to the vector
}