Untitled
unknown
c_cpp
a year ago
2.4 kB
15
Indexable
void read_orders(const string& filename) { ifstream orderFile(filename); if (!orderFile.is_open()) { cout << "Unable to open " << filename << endl; return; } cout << filename << " opened successfully." << endl; int lineCount = 0; string line; while (getline(orderFile, line)) { if (lineCount == 0) { auto orderFields = split(line, ','); if (orderFields.size() >= 3) { order customerOrder; customerOrder.cust_id = stoi(orderFields[0]); customerOrder.order_id = stoi(orderFields[1]); customerOrder.order_date = orderFields[2]; for (size_t i = 3; i < orderFields.size(); ++i) { lineitem item; size_t pos = orderFields[i].find('-'); if (pos != string::npos && pos > 0 && pos < orderFields[i].size() - 1) { item.item_id = stoi(orderFields[i].substr(0, pos)); item.quantity = stoi(orderFields[i].substr(pos + 1)); customerOrder.line_items.push_back(item); } } sort(customerOrder.line_items.begin(), customerOrder.line_items.end()); orders.push_back(customerOrder); } } else if (lineCount == 1) { auto paymentFields = split(line, ','); if (paymentFields.size() >= 2) { int paymentType = stoi(paymentFields[0]); payment* customerPayment = nullptr; if (paymentType == 1 && paymentFields.size() >= 3) { customerPayment = new credit(paymentFields[1], paymentFields[2]); } else if (paymentType == 2 && paymentFields.size() >= 2) { customerPayment = new paypal(paymentFields[1]); } else if (paymentType == 3 && paymentFields.size() >= 3) { customerPayment = new wiretransfer(paymentFields[1], paymentFields[2]); } if (customerPayment) { orders.back().Payment = customerPayment; } } } lineCount = (lineCount + 1) % 2; } orderFile.close(); }
Editor is loading...
Leave a Comment