I'm creating a program that involves a dictionary of terms and definitions. It requires me to create two string arrays of an inputted length. Then prompt the user to input the terms and definitions respectively. It has 2 functions, the main function (works as the input function), and the output function. I have included my code with this.
My issue is the output that I'm getting, it seems to not recognize index 0 for terms as anything. It skips it and put everything forward one index. I think it's something with my getline() function.
I've tried cin.ignore() and that only deletes the first character of each string.
#include <iostream>
#include <string>
using namespace std;
//Main acts as the input function
int main() {
    //Declarations
    void output(string* terms, string* definitions, int numEnteries);
    string* terms;
    string* definitions;
    int numEnteries;
    //Input
    cout << "How many terms would you like in the dictionary?: " << endl;
    cin >> numEnteries;
    //Making the arrays the size the user wants
    terms = new string[numEnteries];
    definitions = new string[numEnteries];
    //Inputs for both terms and definitions
    //I think the issue may be in this loop, I may be wrong though
    for (int i = 0; i < numEnteries; i++){
        cout << "Enter term " << (i+1) << ":";
        getline(cin, terms[i]);
        cin >> ws;
        cout << "Enter the definition for '" << terms[i] << "': ";
        getline(cin, definitions[i]);
        cin >> ws;
    }
    //Calling the output function
    output(terms, definitions, numEnteries);
    return 0;
}
void output(string terms[], string definitions[], int numEnteries){
    cout << "You entered: " << endl;
    //Outputting the terms and definitions in order
    for (int i = 0; i < numEnteries; i++){
    cout << (i+1) << ". " << terms[i] << ": ";
    cout << definitions[i] << endl;
    }
    //Deleting the "new" arrays
    delete[] terms;
    delete[] definitions;
I expected the output to be a nice list like: 1. "Term 1: Def 1" 2. "Term 2: Def 2" ... etc
But instead I'm getting: 1. : term 1 2. def 1: term 2 3. def 2: term 3
 
    