Question: main.cpp: #include #include #include #include / / Add this for strcpy #include functions.h #include assignment.h using namespace std; int main ( int argc,

main.cpp:
#include
#include
#include
#include // Add this for strcpy
#include "functions.h"
#include "assignment.h"
using namespace std;
int main(int argc, char *argv[]){
if (argc !=2){
cerr << "Usage: "<< argv[0]<<""<< endl;
return 1;
}
ifstream file(argv[1]);
if (!file.is_open()){
cerr << "Error opening file." << endl;
return 1;
}
Assignment assignments[MAX_ASSIGNMENTS];
int numAssignments =0;
string line;
while (getline(file, line)){
if (!line.empty() && line[0]!='#'){
insertData(assignments, numAssignments, line);
}
}
file.close();
printReport(assignments, numAssignments);
return 0;
}
void insertData(Assignment assignments[], int& numAssignments, const string& line){
if (numAssignments < MAX_ASSIGNMENTS){
// Split the line into tokens
stringstream ss(line);
string token;
// Parse day
getline(ss, token, ',');
assignments[numAssignments].day = stoi(token);
// Parse task
getline(ss, token, ',');
assignments[numAssignments].task = token;
// Parse who
getline(ss, token, ',');
assignments[numAssignments].who = token;
numAssignments++;
}
}
void printReport(const Assignment assignments[], int numAssignments){
cout << "Printing report..." << endl;
for (int i =0; i < numAssignments; ++i){
cout << "Assignment "<< i +1<<": "<< assignments[i].day <<","<< assignments[i].task <<","<< assignments[i].who << endl;
}
}
functions.cpp:
#include
#include
#include
#include // Add this for strcpy
#include "functions.h"
#include "assignment.h"
using namespace std;
int main(int argc, char *argv[]){
if (argc !=2){
cerr << "Usage: "<< argv[0]<<""<< endl;
return 1;
}
ifstream file(argv[1]);
if (!file.is_open()){
cerr << "Error opening file." << endl;
return 1;
}
Assignment assignments[MAX_ASSIGNMENTS];
int numAssignments =0;
string line;
while (getline(file, line)){
if (!line.empty() && line[0]!='#'){
insertData(assignments, numAssignments, line);
}
}
file.close();
printReport(assignments, numAssignments);
return 0;
}
void insertData(Assignment assignments[], int& numAssignments, const string& line){
if (numAssignments < MAX_ASSIGNMENTS){
// Split the line into tokens
stringstream ss(line);
string token;
// Parse day
getline(ss, token, ',');
assignments[numAssignments].day = stoi(token);
// Parse task
getline(ss, token, ',');
assignments[numAssignments].task = token;
// Parse who
getline(ss, token, ',');
assignments[numAssignments].who = token;
numAssignments++;
}
}
void printReport(const Assignment assignments[], int numAssignments){
cout << "Printing report..." << endl;
for (int i =0; i < numAssignments; ++i){
cout << "Assignment "<< i +1<<": "<< assignments[i].day <<","<< assignments[i].task <<","<< assignments[i].who << endl;
}
}
assignment.h:
#ifndef ASSIGNMENT_H
#define ASSIGNMENT_H
#include // Add this line
const int MAX_ASSIGNMENTS =100;
struct Assignment {
int day;
std::string task; // Use "std::string" instead of just "string"
std::string who; // Use "std::string" instead of just "string"
};
#endif // ASSIGNMENT_H
functions.h:
#ifndef ASSIGNMENT_H
#define ASSIGNMENT_H
#include // Add this line
const int MAX_ASSIGNMENTS =100;
struct Assignment {
int day;
std::string task; // Use "std::string" instead of just "string"
std::string who; // Use "std::string" instead of just "string"
};
#endif // ASSIGNMENT_H
./main.cpp:41:22: error: implicit instantiation of undefined template 'std::basic_stringstream'
stringstream ss(line);
^
/nix/store/1gf2flfqnpqbr1b4p4qz2f72y42bs56r-gcc-11.3.0/include/c++/11.3.0/iosfwd:108:11: note: template is declared here
class basic_stringstream;
^
1 error generated.
make: ***[Makefile:10: main] Error 1

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!