C++ File handling: Reading and displaying CSV file in tabular form
C++ File handling: Exercise-14 with Solution
Write a C++ program to read a CSV file and display its contents in tabular form.
Sample Solution:
C Code:
#include <iostream> // Including the input/output stream library
#include <fstream> // Including the file stream library
#include <string> // Including the string handling library
#include <vector> // Including the vector container library
#include <sstream> // Including the string stream library
// Function to split a string into tokens based on a delimiter
std::vector<std::string> splitString(const std::string &str, char delimiter) {
std::vector<std::string> tokens; // Vector to store the split tokens
std::stringstream ss(str); // Creating a string stream from the input string
std::string token; // String to store each token
// Extract tokens using the specified delimiter
while (std::getline(ss, token, delimiter)) {
tokens.push_back(token); // Store each token in the vector
}
return tokens; // Return the vector of tokens
}
// Function to display the CSV file contents in tabular form
void displayCSVContents(const std::string &filename) {
std::ifstream file(filename); // Open file with given filename for reading
std::string line; // String to store each line of the file
if (file.is_open()) { // Check if the file was successfully opened
while (std::getline(file, line)) { // Read each line from the file
std::vector<std::string> tokens = splitString(line, ','); // Split the line into tokens based on comma delimiter
for (const std::string &token : tokens) { // Loop through each token in the line
std::cout << token << "\t"; // Display each token followed by a tab
}
std::cout << std::endl; // Output a newline after displaying all tokens in a line
}
file.close(); // Close the file
} else {
std::cout << "Failed to open the file." << std::endl; // Display an error message if file opening failed
}
}
int main() {
std::string filename = "test.csv"; // CSV file to read
displayCSVContents(filename); // Display contents of the CSV file in tabular form
return 0; // Return 0 to indicate successful execution
}
Sample Output:
C1 C2 C3 R1 1 2 3 R2 4 5 6 R3 7 8 9
Explanation:
In the above exercise,
- The splitString() function takes a string (str) and a delimiter character (delimiter) and splits the string into tokens based on the delimiter. It returns a vector of strings representing tokens.
- The displayCSVContents() function takes a filename and reads the CSV file line by line using std::ifstream and std::getline.
- For each line, it uses the splitString function to split the line into tokens based on the comma delimiter (,).
- It then loops over the tokens and displays them using std::cout. Each token is separated by a tab character (\t), creating a tabular form.
Flowchart:
CPP Code Editor:
Contribute your code and comments through Disqus.
Previous C++ Exercise: Decrypting the contents of a text file.
Next C++ Exercise: Calculate average of numbers in a file.
What is the difficulty level of this exercise?
It will be nice if you may share this link in any developer community or anywhere else, from where other developers may find this content. Thanks.
https://w3resource.com/cpp-exercises/file-handling/cpp-file-handling-exercise-14.php
- Weekly Trends and Language Statistics
- Weekly Trends and Language Statistics