//: C06:Stack3Test.cpp
// From Thinking in C++, 2nd Edition
// Available at http://www.BruceEckel.com
// (c) Bruce Eckel 2000
// Copyright notice in Copyright.txt
//{L} Stack3
//{T} Stack3Test.cpp
// Constructors/destructors
#include "Stack3.h"
#include "../require.h"
#include <fstream>
#include <iostream>
#include <string>
using namespace std;
/* Questo esempio è simile a quello già proposto a lezione con il nome di StackTest.cpp.
In questo caso però, si utilizzano costruttori e distruttori.*/int main(int argc, char* argv[])
{
/* File name is argument */
requireArgs(argc, 1);
ifstream in(argv[1]);
assure(in, argv[1]);
/* Chiama il costruttore della classe stack, dichiarando un oggetto "textlines". */
Stack textlines;
string line;
/* Read file and store lines in the stack: */
while(getline(in, line))
textlines.push(new string(line));
/* Pop the lines from the stack and print them: */
string* s;
while((s = (string*)textlines.pop()) != 0)
{
cout << *s << endl;
delete s;}
} ///:~