用C ++将数据导入数组

时间:2014-10-30 16:37:23

标签: c++ arrays

我有一份学校作业,我认为应该相对简单,但我现在花了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的第一行是&#39; 16724 27 134&#39;所以idArray [0]应该= 16724,是吗?我认为>>将导入整数,直到它遇到空格,所以数字如上所述间隔开意味着该行应该每行进入3个数组吗?

我应该指出我现在正在网上学习这门课程,看看我喜欢编程,而我的老师实际上并不会说英语,所以我现在就自己学习这个。

2 个答案:

答案 0 :(得分:0)

您正在读取数组的位置x,并打印出位置x + 1(这些行之间的x ++),这显然是空的。

尝试在递增x之前进行打印,如下所示:

fileIn >> idArray[x] >> storeArray[x] >> qtyArray[x];
std::cout << idArray[x] << endl;
count++;
x++;

答案 1 :(得分:0)

您在不使用其返回值的情况下调用fileIn.get()get()方法从流中提取字符并返回它,它不会检查流中是否还有字符。

您应该将实际的输入操作放在循环参数中,因为这是检查流是否执行成功读取的更好方法:

while ((fileIn >> idArray[x] >> storeArray[x] >> qtyArray[x]) && (x < maxCells))

另外,正如评论中指出的那样,您在打印x之前递增idArray[x],因此它会跳过第一个索引。在插入后放置x++