C++: Containers: Example 1 Using a Stack

One of three contrasting examples of solving the problem with increasingly powerful tools: using arrays, then vectors, then stacks.
// Read words and print them in reverse order.
//   Variation using stack and string.
// Fred Swartz 2001-11-08, 2001-12-04

#include <iostream>
#include <stack>
#include <string>
using namespace std;

int main() {

    stack<string> allwords; // stack of all words
    string word;            // input buffer for words.

    // read words/tokens from input stream
    while (cin >> word) {
        allwords.push(word);
    }
    
    cout << "Number of words = " << allwords.size() << endl;

    // write out all the words in reverse order.
    while (!allwords.empty()) {
       cout << allwords.top() << endl;
       allwords.pop();            // remove top element
    }
    return 0;
}//end main