// This program is the skeleton code for the lab 10 in-lab.
// It uses C++ streams for the file input,
// and just prints out the data when read in from the file.
#include <iostream>
#include <fstream>
#include <sstream>
#include <cstdlib>
using namespace std;
// main(): we want to use parameters
int main (int argc, char** argv) {
// verify the correct number of parameters
if (argc != 2) {
cout << "Must supply the input file name as the only parameter" << endl;
exit(1);
}
// attempt to open the supplied file
// must be opened in binary mode as otherwise trailing whitespace is discarded
ifstream file(argv[1], ifstream::binary);
// report any problems opening the file and then exit
if (!file.is_open()) {
cout << "Unable to open file '" << argv[1] << "'." << endl;
exit(2);
}
// read in the first section of the file: the prefix codes
while (true) {
string character, prefix;
// read in the first token on the line
file >> character;
// did we hit the separator?
if (character[0] == '-' && character.length() > 1) {
break;
}
// check for space
if (character == "space") {
character = " ";
}
// read in the prefix code
file >> prefix;
// do something with the prefix code
cout << "character '" << character << "' has prefix code '" << prefix << "'" << endl;
}
// read in the second section of the file: the encoded message
stringstream sstm;
while (true) {
string bits;
// read in the next set of 1's and 0's
file >> bits;
// check for the separator
if (bits[0] == '-') {
break;
}
// add it to the stringstream
sstm << bits;
}
string allbits = sstm.str();
// at this point, all the bits are in the 'allbits' string
cout << "All the bits: " << allbits << endl;
// close the file before exiting
file.close();
return 0
}