C++
Listing the cart
Write the function that prints the cart items formatted.
Listing the cart
To print the products in the cart we will write a printCart function. This function walks the items vector and writes each product's name, price and quantity on one line.
You walk each product with range-based for; on each iteration you print std::cout << p.name << " " << p.price << " " << p.quantity << std::endl;. Because the function does not modify members, adding const at the end is a good habit; the compiler then prevents accidental changes.
Formatted output
In printCart, while each product is written on a single line, spaces separate the fields. Writing std::cout << a << " " << b separates a and b with a space. std::endl moves the cursor to the next line.
The formatting choice drives how readable the output is. When column alignment is needed you use std::setw from <iomanip>; in this project we will just separate with spaces. Writing three fields on one line lets you scan the cart quickly.
Exercise Write the printCart function
Add a printCart function to the Cart struct. Its signature must be void printCart() const. In the body walk each product with range-based for and print with std::cout << p.name << " " << p.price << " " << p.quantity << std::endl;. main already adds two products and calls printCart. The output must be two lines: Notebook 25 2 and Pen 10 3.
Show example solution
#include <iostream>
#include <string>
#include <vector>
struct Product {
std::string name;
double price;
int quantity;
};
struct Cart {
std::vector<Product> items;
void addItem(Product p) {
items.push_back(p);
}
double getSubtotal() {
double sum = 0;
for (const auto& p : items) {
sum += p.price * p.quantity;
}
return sum;
}
void printCart() const {
for (const auto& p : items) {
std::cout << p.name << " " << p.price << " " << p.quantity << std::endl;
}
}
};
int main() {
Cart cart;
Product p1;
p1.name = "Notebook";
p1.price = 25.0;
p1.quantity = 2;
cart.addItem(p1);
Product p2;
p2.name = "Pen";
p2.price = 10.0;
p2.quantity = 3;
cart.addItem(p2);
cart.printCart();
return 0;
}
Test yourself
-
What does printCart do?
cart.printCart();
- Adds a product
- Computes the total
- Removes a product
- Prints the cart to the screen
Show answer
Prints the cart to the screen — printCart writes the products in the cart to the screen.
-
Match each format part to its meaning
- p.name
- Product name
- p.price
- Unit price
- p.quantity
- Quantity
- std::endl
- Line end
-
Write the printCart body
void printCart() const {
for (const auto& p : items) {
std::cout << ____ << " " << p.price << " " << p.quantity << std::endl;
}
}
Show answer
void printCart() const {
for (const auto& p : items) {
std::cout << p.name << " " << p.price << " " << p.quantity << std::endl;
}
}
Next lesson: Putting it together