根据用户输入存储多个数组
Store multiple arrays based on user input
我正在尝试创建一个函数,它允许用户键入多个数量的整数,因此如果用户想要拥有 3 个不同的存储来保存不同的整数,输入将如下所示:
5
97 12 31 2 1 //let's say this is held in variable "a"
1 3 284 3 8 // "b"
2 3 482 3 4 // "c"
2 3 4 2 3 // "d"
99 0 2 3 42 // "e"
由于我们不知道用户每次都会输入什么数字,所以我不确定如何创建一个动态分配的数组,每次都会创建一个 x 数量的数组。我希望能够访问 a、b、c、d、e 或任意数量的数组的每个索引。
到目前为止,这就是我所拥有的,但是由于不可预测,因此我在创建数组时遇到了问题。我故意不使用向量,因为我真的不明白指针是如何工作的,所以我试图使用它。
int* x;
int length, numbers;
cin >> length;
x = new int[length]
for (int i=0;i<length;i++)
{
std::getline(std::cin, numbers); //this didn't work for me
x[i] = numbers
}
如果有什么不清楚的地方,请告诉我!谢谢!
它没有第一行。它一次得到 1 个整数,由于每行有 5 个整数,并且在第一行输入了 5,因此最终只会得到第一行中的数字。 代码中的x
是一个整数数组,它需要有足够的位置容纳所有整数,在本例中为 25。如果保证每行 5 个整数,那么您可以假设分配整数长位置5 * length
就可以了。您还需要一个内部 for 循环。1 for
用于遍历行,另一个用于遍历行上的每个整数。
我建议像这样使用 cin:
int d;
while(cin){
cin >> d;
// Do something with d
if(cin.peek() == 'n'){
// Create a new row in your dynamic array
}
}
这将抓住每个数字到空格。
实现此目的的另一种方法是将带有getline()
的字符串与string.empty()
结合使用来获取每一行,然后使用 strtok
将行拆分为标记。虽然getline
仅适用于字符串,但strtok
会将字符串拆分为标记,然后您可以将其转换为 int(或使用 atoi)。
要存储这些令牌,您需要使用向量,因为它们本质上是动态的,可以轻松调整大小以满足任何需求。我会看到关于多维向量的讨论。
相关文章:
- 多维数组存储三种不同的数据类型?
- C++将原始字符数组存储在元组中
- 将十六进制字符数组存储在字节数组中,而无需更改为 ASCII 或其他任何东西
- 我正在编写一个代码来将 int 数组存储在文件中,然后用 c++ 检索它,但是检索第一项是假值,我该如何解决这个问题?
- 如何将元素的索引从2D数组存储到1D数组中,然后交换这些值
- 如何将JSON数组存储在Arduino程序中
- 如何在AVR(例如:ATMega)或Arduino微控制器上制作2D PROGMEM阵列的1D PROGMEM数组(存储
- 使用 char 数组存储数据
- 使用平面数组存储的元组容器
- 数组 存储并要求用户搜索它
- 将值从一个 char 数组存储到另一个 char 数组
- 如何使字符串数组存储在向量中
- 将构造的静态数组存储在多个文件中的内存中
- 将整数数组存储在堆上并通过指针访问它们
- c++声明一个数据类型的字节数组,该数组存储在字符串中
- 使用指针数组存储阶乘计算的所有中间结果
- 使用异构数组存储不同的子类
- 读取文件内容,存储在数组中,向数组添加更多内容,然后将新数组存储在文件C++中
- 尝试将复杂数组存储到类 c++ 中
- 在字节数组存储中嵌入 int/string