What level of expertise would you guys rate the following code in C++?
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
// Save a vector of names to a file
void saveNames(const std::vector<std::string> &names, const std::string &filename) {
std::ofstream outFile(filename);
if (!outFile) {
std::cout << "Error opening " << filename << " for writing!" << std::endl;
return;
}
for (const std::string &name: names) {
outFile << name << std::endl; // Each name on a new line
}
outFile.close();
std::cout << "Names saved to " << filename << std::endl;
}
// Load names from a file into a vector
std::vector<std::string> loadNames(const std::string &filename) {
std::vector<std::string> names;
std::ifstream inFile(filename);
if (!inFile) {
std::cout << "Error opening " << filename << " for reading!" << std::endl;
return names; // Return empty vector on failure
}
std::string name;
while (std::getline(inFile, name)) {
if (!name.empty()) { // Skip empty lines
names.push_back(name);
}
}
inFile.close();
return names;
}
int main() {
std::vector<std::string> names;
std::string input;
// Collect names from user
std::cout << "Enter names (type 'done' to stop): ";
std::getline(std::cin, input);
while (input != "done") {
names.push_back(input);
std::cout << "Next name (or 'done'): ";
std::getline(std::cin, input);
}
// Save names to file
saveNames(names, "names.txt");
// Load names from file and print
std::vector<std::string> loadedNames = loadNames("names.txt");
if (loadedNames.empty()) {
std::cout << "No names loaded." << std::endl;
} else {
std::cout << "Loaded names:" << std::endl;
for (const std::string &name: loadedNames) {
std::cout << "- " << name << std::endl;
}
}
return 0;
}
