// 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 <stdlib.h> 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 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(); }