// 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 }