[英]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.