在C++中将数据导入数组
Importing data into array in C++
我有一个学校作业,我觉得应该相对简单,但我现在已经在这部分花了大约5个小时,不知道我需要做什么。我正试图将文件中每行的3个整数导入3个不同的数组。每一行都有一个ID号、商店编号和订购数量。我想将它们存储在3个数组中,其中相同的索引将寻址文本文件中同一行中的整数。
我从其他地方得到的建议是使用stringstream
或vector
,我以前都没有使用过,我认为现在在课堂上不需要它们。我目前的代码是:
bool loadArrays(const char* fileName, long idArray[], int storeArray[], int qtyArray[], int &count, int maxCells)
{
count = 0;
ifstream fileIn;
fileIn.open("data.txt");
int x = 0;
while ((fileIn.get()) && (x < maxCells))
{
fileIn >> idArray[x] >> storeArray[x] >> qtyArray[x];
count++;
x++;
std::cout << idArray[x] << endl;
}
fileIn.close();
return true;
}
它很好地循环通过。我通过引用传递count变量,并在运行此函数后将其打印出来,它会给我20
。然而,上面的cout << idArray[x]
行每次只显示0
,就像我没有正确导入数据一样?
我可能导入了错误的数据,这目前还可以,但即便如此,我不应该在idArray[0]中至少得到一些东西吗?data.txt的第一行是"16724 27 134",所以idArray[0]应该=16724,是吗?我认为>>
会导入整数,直到它遇到空白,所以像上面这样间隔开的数字意味着每行应该有3个数组,对吧?
我应该指出,我现在正在网上学习这门课程,看看我喜欢编程,而我的老师实际上不会说英语,所以我现在有点自学。
您正在读取数组的位置x,并打印出位置x+1(这些行之间的x++),它显然仍然是空的。
在递增x之前尝试打印,如下所示:
fileIn >> idArray[x] >> storeArray[x] >> qtyArray[x];
std::cout << idArray[x] << endl;
count++;
x++;
您调用fileIn.get()
时不使用其返回值。get()
方法从流中提取一个字符并返回,它不检查流中是否还有字符。
您应该将实际的输入操作放入循环参数中,因为这是检查流是否成功读取的更好方法:
while ((fileIn >> idArray[x] >> storeArray[x] >> qtyArray[x]) && (x < maxCells))
此外,正如评论中所指出的,在打印idArray[x]
之前要递增x
,因此它将跳过第一个索引。将x++
放在插入之后。
- Mongodb c++驱动程序:如何查询元素的数组
- 将数组的地址分配给变量并删除
- 从C++本机插件更新Vector3数组
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 数组索引的值没有增加
- 将对象数组的引用传递给函数
- 为char数组调整zlib-zpipe
- 2D数组来自文本输入,中间有空格
- std::向量与传递值的动态数组
- 使用 libconfig 导入数组或列表设置
- 将大于k的数组元素导入到另一个数组C 中
- 将子目录中的文件列表导入数组
- 将C数组导入到特征变换矩阵中
- 动态扩展数组以导入数据的好方法是什么
- 在C++中将数据导入数组
- 从导入的二维数组计算平均值
- 为什么我将数字数据从文本文件导入二维数组的代码不起作用
- 将值从*.dat文件导入数组
- 选择文本文件中的特定数据导入到c++的2d数组中