๐ Scenario: You are working on a simple program that saves and reads a list of favorite fruits to and from a file. This is useful when you want to keep your data even after the program stops running.
๐ฏ Goal: Build a C++ program that writes a list of fruits to a file and then reads the fruits back from the file to display them.
๐ What You'll Learn
Create a vector of strings with exact fruit names
Create a string variable for the filename
Write the fruits to the file using ofstream
Read the fruits from the file using ifstream
Print each fruit read from the file
๐ก Why This Matters
๐ Real World
Reading and writing files is a basic skill used in many programs to save user data, settings, or logs so the information is not lost when the program closes.
๐ผ Career
Many software jobs require handling files for data storage, configuration, or communication between programs. Knowing how to read and write files is essential.
Progress0 / 4 steps
1
Create the list of fruits
Create a std::vector<std::string> called fruits with these exact entries: "Apple", "Banana", "Cherry", "Date", "Elderberry".
C++
Hint
Use curly braces {} to list the fruit names inside the vector.
2
Set the filename
Create a std::string variable called filename and set it to "fruits.txt".
C++
Hint
Use double quotes "" to set the filename string.
3
Write fruits to the file
Use std::ofstream to open the file with the name filename. Then use a for loop with variable fruit to write each fruit from fruits to the file, each on its own line. Close the file after writing.
C++
Hint
Use std::ofstream to open the file and the insertion operator << to write each fruit followed by a newline.
4
Read fruits from the file and print
Use std::ifstream to open the file with the name filename. Use a std::string variable called line. Use a while loop with std::getline to read each line from the file into line. Inside the loop, print the line using std::cout. Close the file after reading.
C++
Hint
Use std::getline inside a while loop to read each line and print it.
Practice
(1/5)
1. What is the primary purpose of using ifstream in C++?
easy
A. To write data to a file
B. To read data from a file
C. To create a new file
D. To delete a file
Solution
Step 1: Understand the role of ifstream
ifstream stands for input file stream, which is used to read data from files.
Step 2: Differentiate from ofstream
ofstream is used to write data to files, so it is not the correct answer here.
Final Answer:
To read data from a file -> Option B
Quick Check:
ifstream = read file [OK]
Hint: Remember 'i' in ifstream means input (read) [OK]
Common Mistakes:
Confusing ifstream with ofstream
Thinking ifstream creates or deletes files
Mixing input and output streams
2. Which of the following is the correct way to open a file named data.txt for writing using ofstream?
easy
A. ofstream file.open("data.txt");
B. ifstream file("data.txt");
C. file.open(ofstream, "data.txt");
D. ofstream file("data.txt");
Solution
Step 1: Recognize correct ofstream syntax
To open a file for writing, you create an ofstream object and pass the filename to its constructor.
Step 2: Check other options for syntax errors
ifstream file("data.txt"); uses ifstream which is for reading, not writing. ofstream file.open("data.txt"); incorrectly calls open as a constructor. file.open(ofstream, "data.txt"); has wrong parameter order and syntax.
The code tries to write to the file before opening it, which is incorrect because the file must be opened first.
Step 2: Confirm other options
Missing semicolon after file.open() is wrong because semicolons are present. ofstream cannot write strings is false; ofstream can write strings. File should be closed before opening is incorrect; you cannot close before opening.
Final Answer:
File is opened after writing to it -> Option C
Quick Check:
Open file before writing [OK]
Hint: Always open file before writing or reading [OK]
Common Mistakes:
Writing before opening the file
Confusing order of open and close
Assuming ofstream can't write strings
5. You want to read integers from a file input.txt and write only the even numbers to even.txt. Which code snippet correctly implements this?
hard
A. std::ifstream inFile("input.txt");
std::ofstream outFile("even.txt");
int num;
while (inFile >> num) {
if (num % 2 == 0) {
outFile << num << '\n';
}
}
inFile.close();
outFile.close();
B. std::ofstream inFile("input.txt");
std::ifstream outFile("even.txt");
int num;
while (inFile >> num) {
if (num % 2 == 0) {
outFile << num << '\n';
}
}
inFile.close();
outFile.close();
C. std::ifstream inFile;
std::ofstream outFile;
inFile.open("input.txt");
outFile.open("even.txt");
int num;
while (inFile >> num) {
if (num % 2 == 1) {
outFile << num << '\n';
}
}
inFile.close();
outFile.close();
D. std::ifstream inFile("input.txt");
std::ofstream outFile("even.txt");
int num;
while (!inFile.eof()) {
inFile >> num;
if (num % 2 == 0) {
outFile << num << '\n';
}
}
inFile.close();
outFile.close();
Solution
Step 1: Check correct stream types and file opening
std::ifstream inFile("input.txt");
std::ofstream outFile("even.txt");
int num;
while (inFile >> num) {
if (num % 2 == 0) {
outFile << num << '\n';
}
}
inFile.close();
outFile.close(); correctly uses ifstream to read and ofstream to write, opening files in constructors.
Step 2: Verify reading loop and condition
std::ifstream inFile("input.txt");
std::ofstream outFile("even.txt");
int num;
while (inFile >> num) {
if (num % 2 == 0) {
outFile << num << '\n';
}
}
inFile.close();
outFile.close(); uses while (inFile >> num) which safely reads integers until EOF. It writes only even numbers (num % 2 == 0) to output.
Step 3: Identify errors in other options
std::ofstream inFile("input.txt");
std::ifstream outFile("even.txt");
int num;
while (inFile >> num) {
if (num % 2 == 0) {
outFile << num << '\n';
}
}
inFile.close();
outFile.close(); swaps stream types incorrectly. std::ifstream inFile;
std::ofstream outFile;
inFile.open("input.txt");
outFile.open("even.txt");
int num;
while (inFile >> num) {
if (num % 2 == 1) {
outFile << num << '\n';
}
}
inFile.close();
outFile.close(); writes odd numbers, not even. std::ifstream inFile("input.txt");
std::ofstream outFile("even.txt");
int num;
while (!inFile.eof()) {
inFile >> num;
if (num % 2 == 0) {
outFile << num << '\n';
}
}
inFile.close();
outFile.close(); uses while (!inFile.eof()) which can cause reading errors.
Final Answer:
Option A code snippet -> Option A
Quick Check:
Correct streams + safe read loop + even check = std::ifstream inFile("input.txt");
std::ofstream outFile("even.txt");
int num;
while (inFile >> num) {
if (num % 2 == 0) {
outFile << num << '\n';
}
}
inFile.close();
outFile.close(); [OK]
Hint: Use while(inFile >> num) and check even with num % 2 == 0 [OK]
Common Mistakes:
Swapping ifstream and ofstream
Using eof() in loop condition
Writing odd numbers instead of even
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.