从C++中的文本加载并行数组时遇到问题

Having trouble loading a parallel array from text in C++

本文关键字:数组 遇到 问题 并行 加载 C++ 文本      更新时间:2023-10-16

抱歉,如果这个问题有重复,我只看到有人用 C 语言问这个问题。我正在尝试使用来自外部数据文件的数据加载并行数组,但是当文件打开并开始加载时,我的输出中得到的只是一个空白控制台。

有问题的代码是...

include <iostream>
#include <fstream>
using namespace std;
...
Void InventoryData::loadArrays()
{
    ifstream partIn;
    partIn.open("inventoryPricing.dat");
    if (partIn.is_open())
        {
            //Prime Read
            partIn    >>    partNum[invCount]
                      >>    price[invCount];

        while(!partIn.eof())
            {
                invCount++;
                partIn  >>  partNum[invCount]
                        >>  price[invCount];
            } //END While
        partIn.close();
        }   //END IF*/
    else
        {
            invCount = -1;
            cout<<"File failed to open."<<endl;
        }
}

当我注释掉 if 语句时,一切都很好,我得到"文件无法打开"语句没有问题,但如果它尝试打开它只是一个空白屏幕?不知道从哪里开始寻找,一双更聪明的眼睛能引导我走上正确的道路吗?

编辑:在遵循一些建议后,我在每个循环下方添加了一条cout线。它现在返回每个文件,但也返回一个附加文件。最重要的是,有了这个新添加的内容,该文件现在继续进入其他代码行,而以前没有?

它现在返回每个文件,但也返回一个附加文件。

代码的测试eof()不正确。 您应该测试输入操作是否成功,几乎从不eof(),除非您已经遇到输入失败。 正确的代码是:

if (ifstream partIn("inventoryPricing.dat"))
{
    invCount = 0;
    while (partIn >> partNum[invCount] >> price[invCount])
        ++invCount;
    if (partIn.fail())
    {
        // could set invCount to -1 to avoid partial processing?
        std::cerr << "File parsing failed after " << invCount << " entriesn";
    }   
}
else
{
    invCount = -1;
    std::cerr << "File failed to open.n";
}

最重要的是,有了这个新添加的内容,该文件现在继续进入其他代码行,而以前没有?

我什至猜不出你这是什么意思......