我目前正在嘗試編寫一個程序,它可以將文件中的對象讀入數組。接近程序結束時,我希望它將數組的內容寫入文件中。到目前爲止,我已經取得了一定程度的成功,我從文件方法閱讀似乎沒有問題,並在一定程度上我知道我接近寫入文件方法。它可以工作,但它也輸出由默認構造函數創建的數組的新元素。有沒有什麼辦法可以阻止這些默認對象被寫入文件或更好的,阻止他們在第一個地方?從文件讀取對象到數組中,反之亦然
這裏是我的成員變量,默認的構造函數和方法在我的課
private:
//Member variables
string stockCode;
string stockDesc;
int currentLevel;
int reorderLevel;
//Defining Default Constructor
Stock::Stock()
{
}
//Defining function for items to file
void Stock::writeToFile(ofstream& fileOut)
{
fileOut << stockCode << " ";
fileOut << stockDesc << " ";
fileOut << currentLevel << " ";
fileOut << reorderLevel << " ";
}
//Defining function for reading items in from the file
void Stock::readFromFile(ifstream& fileIn)
{
fileIn >> stockCode;
fileIn >> stockDesc;
fileIn >> currentLevel;
fileIn >> reorderLevel;
}
這裏是我的主要
#include <iostream>
#include <string>
#include <fstream>
#include "Stock.h"
using namespace std;
int main()
{
const int N = 15;
Stock items[N];
int option = 0;
ifstream fileIn;
fileIn.open("Stock.txt");
for (int i = 0; i < N; ++i)
items[i].readFromFile(fileIn);
fileIn.close();
cout << "1.Display full stock list." << endl;
cout << "9.Quit." << endl;
cout << "Please pick an option: ";
cin >> option;
switch (option)
{
case 1:
{
cout << "stockCode" << '\t' << "stockDesc" << '\t' << '\t' << "CurrentLevel" << '\t' << "ReorderLevel" << endl;
cout << "------------------------------------------------------------------------------" << endl;
for (int i = 0; i < N; ++i)
{
cout << items[i].getCode() << '\t' << '\t';
cout << items[i].getDescription() << '\t' << '\t' << '\t';
cout << items[i].getCurrentLevel() << '\t' << '\t';
cout << items[i].getReorderLevel() << endl;
}
break;
}
case 9:
ofstream fileOut;
fileOut.open("Stock.txt");
for (int i = 0; i < N; ++i)
{
items[i].writeToFile(fileOut);
}
break;
}
return 0;
}
跟蹤您使用其他變量的元素數量。 – molbdnilo
'Stock items [N];'最好使用'std :: vector items;'並使用'push_back()'來填充它。 –