此程序需要一个常量整数才能将数组大小设置为50,而我输入的文件的数组要小于该数组。当我通过程序读取文件时,在读取文件的所有内容后,它会打印全0,最大为50个大小限制。
#include <iostream>
#include <fstream>
#include <string>
#include <iomanip>
using namespace std;
const int MENU_AMOUNT = 50;
void getItems(string itemNames[], int quantities[], double prices[], int& size, ifstream& infile);
void outputItem(string itemNames[], int itemLen, double prices[], int priceLen);
int main()
{
ifstream infile;
string filename;
string itemNames[MENU_AMOUNT];
int quantities[MENU_AMOUNT];
double prices[MENU_AMOUNT];
int size = 0;
int itemLen = 20;
int priceLen = 10;
cout << fixed << setprecision(2);
cout << endl;
do
{
cout << "Enter filename: ";
cin >> filename;
infile.open(filename.c_str());
}
while (!infile.is_open());
getItems(itemNames, quantities, prices, size, infile);
outputItem(itemNames, itemLen, prices, priceLen);
return 0;
}
void getItems(string itemNames[], int quantities[], double prices[], int& size, ifstream& infile)
{
do
{
for (int i = 0; i < MENU_AMOUNT; i++)
{
infile >> itemNames[size] >> prices[size] >> quantities[size];
size++;
}
}
while (!infile.eof());
infile.close();
return;
}
void outputItem(string itemNames[], int itemLen, double prices[], int priceLen)
{
for (int i = 0; i < MENU_AMOUNT; i++)
{
cout << left << setw(itemLen) << itemNames[i];
cout << "$";
cout << right << setw(priceLen) << prices[i];
cout << endl;
}
return;
}
我得到的输出是:
FriedOysterSkins $ 14.99
KelpShake $ 1.99
KrabbyPatty $ 1.25
ButteredBarnacle $ 7.99
CrunchyKelpDog $ 5.99
FreshSludgePudding $ 2.99
Pizza $ 12.99
SmallCoralBits $ 20.00
KelpRings $ 20.50
SailorsSurprise $ 60.00
SmallSeafoamSoda $ 20.25
$ 0.00
$ 0.00
$ 0.00
$ 0.00
$ 0.00
$ 0.00
$ 0.00
$ 0.00
$ 0.00
$ 0.00
$ 0.00
$ 0.00
$ 0.00
$632300596474856049734706189829338342549423743118279836536966762333211979446970678021416769400077740197104484712885971191235557010031413546520439315996546896105110742152763641640428494858125564065503899934408855258480937266943855951872.00
$ 0.00
$ 0.00
$ 0.00
$ 0.00
$ 0.00
$ 0.00
$ 0.00
$ 0.00
$ 0.00
$ 0.00
$ 0.00
$ 0.00
$ 0.00
$ 0.00
$ 0.00
$ 0.00
$ 0.00
$ 0.00
$ 0.00
$ 0.00
$ 0.00
$ 0.00
$ 0.00
$ 0.00
$ 0.00
如果我将常量整数更改为所需的数组(12)大小,则它将正确输出,但是我需要file函数的末尾才能正常工作,而不是更改全局变量。