簡體   English   中英

無法在C ++中從文本加載並行數組

[英]Having trouble loading a parallel array from text in C++

抱歉,如果該問題重復,我只看到有人用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語句時,一切都很好,並且我得到“文件無法打開”語句沒問題,但是如果它試圖打開,那只是一個空白屏幕? 不知道從哪里開始看,明智的眼睛能指引我走上正確的道路嗎?

編輯:遵循一些建議后,我在每個循環下添加了一條提示行。 現在,它將返回每個文件,但還會返回一個附加文件。 最重要的是,有了這個新增加的文件,文件現在可以繼續到以前沒有的其他代碼行中?

現在,它將返回每個文件,但還會返回一個附加文件。

您的代碼錯誤地測試了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 << " entries\n";
    }   
}
else
{
    invCount = -1;
    std::cerr << "File failed to open.\n";
}

最重要的是,有了這個新增加的文件,文件現在可以繼續到以前沒有的其他代碼行中?

我什至都猜不到你的意思是...。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM