#include #include #include using namespace std; #include "pstringfactory.h" #include "strutils.h" int main(int argc, char * argv[]) { string filename,word; vector svec; // store raw strings vector psvec; // store string proxies/flyweights PstringFactory * psfac = PstringFactory::getInstance(); if (argc <= 1) { cerr << "usage " << argv[0] << " filename" << endl; exit(1); } filename = argv[1]; ifstream input(filename.c_str()); while (input >> word) { ToLower(word); StripPunc(word); svec.push_back(word); // psvec.push_back(psfac->getString(word)); } // copy(svec.begin(),svec.end(),ostream_iterator(cout,"\n")); // copy(psvec.begin(),psvec.end(),ostream_iterator(cout,"\n")); size_t k; // compared with vector::size long storage=0; for(k=0; k < svec.size(); k++) { storage += sizeof(svec[k]) + svec[k].length()*sizeof(char); } cout << " string vec size = " << svec.size() << " storage = " << storage << " bytes" << endl; cout << " pstring vec size = " << psvec.size() << " storage = " << psvec.size()*sizeof(psvec[0]) << endl; psfac->reportStorage(); return 0; }