Bjarne Stroustrup Book - Vector and For loop - won't work

Viewed 1151

I'm having difficulties with a particular piece of code I'm learning from "Programming Principles And Practice Using C++".

I can't get an output from a loop refering to a vector. Am using std_lib_facilities and stdafx because the book and MVS told me so.

#include "stdafx.h"
#include "../../std_lib_facilities.h"


int main()
{
    vector<string>words;
    for(string temp; cin>>temp; )
        words.push_back(temp);
    cout << "Number of words: " << words.size() << '\n';
}

This will produce nothing. I'll get the prompt, type in some words, then enter, then nothing.

Tried some variations I got here and from other websites as well, such as:

//here i tried the libraries the guy used in his code
#include <iostream>
#include <string>
#include <vector>

using namespace std;

int main()
{
    cout << "Please enter a series of words followed by End-of-File: ";
    vector<string> words;
    string word;
    string disliked = "Broccoli";

    while (cin >> word)
        words.push_back(word);

    cout << "\nNumber of words: " << words.size() << endl;

      // cycle through all strings in vector
    for (int i = 0; i < words.size(); ++i)
    {
      if (words[i] != disliked)
          cout << words[i] << endl;
      else
          cout << "BLEEP!\n";
    }
    return 0;
}

Still nothing.

After trying some things, by elimination I'm pretty certain the problem is with the loop-to-vector communication, because all of these work fine:

int main()
{
    vector<string>words = { "hi" };
    words.push_back("hello");
    cout << words[1] << "\n"; // this will print hello

    for (int i = 0; i < words.size();++i) {
         cout << words[i] << "\n"; // this will print out all elements 
                                   // inside vector words, ( hi, hello)
         }

    cout << words.size();// this will print out number 2

    for (string temp; cin >> temp;) {
         words.push_back(temp);
        }

    cout << words.size();// this won't do anything after i type in some 
                         // words; shouldn't it increase the size of the 
                         // vector?
}

Neither will this alone:

int main()
{
    vector<string>words = { "hi" };
    for (string temp; cin >> temp;) {
        words.push_back(temp);
        }
    cout << words.size();
}

What am I missing, please? Thank you in advance.

2 Answers
Related