Итак, моя программа разделена на 3 файла: заголовок, реализация, основной файл.
заголовок:
#ifndef CUSTOMER_H
#define CUSTOMER_H
#include <string>
using std::string;
#include <fstream>
using std::ofstream; // Output file class
using std::ifstream; // Input file class
class MenuList {
private:
int _itemNo;
string _category;
string _descript;
double _price;
public:
MenuList();
void readin(ifstream& infile); // Read customer from file
void display();
void order();
};
#endif
реализация:
#include "prog2Head.h"
#include <iostream>
using std::cout;
using std::cin;
// Default constructor
MenuList::MenuList() : _itemNo(0), _category(""), _descript(""), _price(0.0) { }
// Read customer details in from file
void MenuList::readin(ifstream& infile) {
infile >> _itemNo;
getline(infile, _category, ':');
getline(infile, _descript, ':');
infile >> _price;
}
// Display customer details
void MenuList::display() {
cout << _itemNo << ' ' << _category << " - " << _descript <<"\t\t";
}
void MenuList::order() {
char cont;
int qty;
cout << "Order:\n";
cout << "__________\n";
do{
cout << "Item: ";
cin >> _itemNo;
cout << "Quantity: ";
cin >> qty;
cout << "Continue?(y)";
cin >> cont;
} while(cont == 'y');
}
и основной:
#include "prog2Head.h"
#include <iostream>
using std::cout;
using std::endl;
using std::cin;
#include <fstream>
using std::ofstream; // Output file class
using std::ifstream; // Input file class
int main() {
ifstream fromDisk("menu.txt"); // Open file for reading
while(!fromDisk.eof()) { // Loop until end of file is reached
MenuList menu; // Create customer object
menu.readin(fromDisk); // Read customer from file
if(!fromDisk.eof()) { // Display customer
menu.display();
}
}
MenuList menu;
menu.order();
return 0;
}
И такой файл, как:
1 рыбное блюдо: рыба и чипсы: 21
2 мясное блюдо: стейк и дк: 15,3
3 мясное блюдо: баранина и дк: 21,9
Где последний номер - цена, а первый - идентификатор.
Я хочу ввести идентификатор и отобразить цену товара с этим идентификатором. Я знаю, что это как-то связано с созданием массива, но я искал некоторое время и до сих пор не могу заставить его работать.