在C++中将数据导入数组

Importing data into array in C++

本文关键字:导入 数组 数据 C++      更新时间:2023-10-16

我有一个学校作业,我觉得应该相对简单,但我现在已经在这部分花了大约5个小时,不知道我需要做什么。我正试图将文件中每行的3个整数导入3个不同的数组。每一行都有一个ID号、商店编号和订购数量。我想将它们存储在3个数组中,其中相同的索引将寻址文本文件中同一行中的整数。

我从其他地方得到的建议是使用stringstreamvector,我以前都没有使用过,我认为现在在课堂上不需要它们。我目前的代码是:

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++放在插入之后。