vendredi 9 octobre 2020

C++ Vector is printing with unexpected result

I am making a random username generator and I am having issues with printing numbers after the randomly selected vector item.

Code:

#include <iostream>
#include <cassert>
#include <vector>
#include <fstream>
using namespace std;

int main () {
    // Initialize
    srand (time(NULL));
    int length = 0, quantity = 0, random = 0;
    
    // Prompt & Introduce user
    cout << "Random Username Generator!" << endl;
    cout << "Enter word length, 0 for random: ";
    cin >> length;
    cout << "How many words?: ";
    cin >> quantity;

    // Read in dictionary textfile
    ifstream fin;
    fin.open( "CSW_2019.txt" );
    assert( fin.is_open() );

    // Initialize vector
    vector<string> validWords;  
    string word = ""; 

    // Loop to build validWords vector
    while ( !fin.eof() ) { 
        getline(fin, word);
        if ( word.length()-1 == length || length == 0 ) { 
            validWords.push_back(word);
        }   
    }   

    // Loop to randomly display words and 1-2 digits following
    for ( int i = 0; i < quantity; i++ ) { 
        // Random in-range value
        random = rand() % validWords.size();

        // Print random word
        cout << validWords[random] << flush;

        // Print number between 0 and 99
        cout << random % 100 << endl;
    }   

    // Close file because I wasn't raised in a barn
    fin.close();
}

Output:

Random Username Generator!
Enter word length, 0 for random: 4
How many words?: 4
92IN
24RE
92PS
31OR

My question is NOT about how to print a c++ vector, because it is simple. My question is seeking understanding for the strange printing output.

Here is an example of output that does not implement the line cout << random % 100 << endl; and changes the above << flush; to << endl; instead.

Output (not implementing numbers):

Random Username Generator!
Enter word length, 0 for random: 4
How many words?: 4
DOLT
RAYS
MOLE
BELT

Any and all help is appreciated, thank you all in advance.




Aucun commentaire:

Enregistrer un commentaire