C++ Rock Paper Scissors Errors

I have looked in other threads and have not been able to find answers for my specific issue. I am trying to build a rock, paper, scissors game using C++ functions.

Sample output of the game is shown below:

Rock, Paper Scissors: play? (y or n): y

OK, let's play!

Please enter your choice:

    1 for ROCK

    2 for PAPER

    3 for SCISSORS: 1

Computer chose rock, you chose rock

Tie game!

Rock, Paper Scissors: play? (y or n): y

OK, let's play!

Please enter your choice:

    1 for ROCK

    2 for PAPER

    3 for SCISSORS: 1

Computer chose paper, you chose rock

Computer wins!

Rock, Paper Scissors: play? (y or n): y

OK, let's play!

Please enter your choice:

    1 for ROCK

    2 for PAPER

    3 for SCISSORS: 1

Computer chose scissors, you chose rock

You win!

Rock, Paper Scissors: play? (y or n): n

Bye!

  // rockpaperscissors.cpp
// 2/12/17
// plays rock paper scissors with the computer

#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;

// function prototypes

// convert a numeric choice to the corresponding string,
// e.g. NUM_ROCK returns STR_ROCK
string choiceNumToString(int choice_num);
// get a random value between 1 and 3 (LIMIT) for the computer's choice
int getComputerChoice();
// return true if ch is valid choice of NUM_ROCK, NUM_PAPER, or NUM_SCISSORS
bool isValid(int ch);
// get, validate, and return the human user's choice
int getChoice();
// determine the winner - returns PLAYER_X or PLAYER_TIE
int determineWinner(int choice1, int choice2);

// global constants!
const int RAND_LIMIT = 3;
const int NUM_ERROR = 0;
const int NUM_ROCK = 1;
const int NUM_PAPER = 2;
const int NUM_SCISSORS = 3;

const string STR_ERROR = "error";
const string STR_ROCK = "rock";
const string STR_PAPER = "paper";
const string STR_SCISSORS = "scissors";

const int PLAYER_TIE = 0;
const int PLAYER_1 = 1;
const int PLAYER_2 = 2;

int main()
{
    unsigned seed = time(0);
    string inputStr; // general purpose string for input
    bool continuing = false;
    int player1_choice = 0, player2_choice = 0;
    int winner = 0;

    // seed the random number generator
    srand(seed);

    // main loop - ask the user if they want to play
    // and continue if confirmed
    do
    {
        cout << "Rock, Paper Scissors: play? (y or n): ";
        cin >> inputStr;
        if (inputStr != "y")
            continuing = false;
        else
        {
            continuing = true;
            cout << "OK, let's play!" << endl;

            // player 1 by default is the computer, we may want
            // want to enhance in the future to allow two humans
            // (or two computers!)
            player1_choice = getComputerChoice();
            // cout << "Player 1 chooses " << player1_choice << endl; // debug
            player2_choice = getChoice();
            // cout << "Player 2 chooses " << player2_choice << endl; // debug

            // echo choice and determine winner
            cout << "Computer chose " << choiceNumToString(player1_choice) <<
                 ", you chose " << choiceNumToString(player2_choice) << endl;
            winner = determineWinner(player1_choice, player2_choice);
            // show winner
            if (winner == PLAYER_1)
                cout << "Computer wins!" << endl;
            else if (winner == PLAYER_2)
                cout << "You win!" << endl;
            else
                cout << "Tie game!" << endl;
        }
    }
    while(continuing == true);

    cout << "Bye!" << endl;
    return 0;
}

void displayChoice(int);
int determineWinner(int player1_choice, int player2_choice)
{
    bool winner;
    while (player1_choice == player2_choice)
    {
        winner = false;
        player1_choice = getComputerChoice();
        player2_choice = getChoice();
        displayChoice(player1_choice);
    }
    if (player1_choice != player2_choice)
    {
        winner = true;
        if ((player2_choice == NUM_SCISSORS) && (player1_choice == NUM_PAPER))
        {
            cout << "Computer chose " << choiceNumToString(player1_choice) <<
                 ", you chose " << choiceNumToString(player2_choice) << endl;
            winner = determineWinner(player1_choice, player2_choice);
        }
        if ((player2_choice == NUM_PAPER) && (player1_choice == NUM_ROCK))
        {
            cout << "Computer chose " << choiceNumToString(player1_choice) <<
                 ", you chose " << choiceNumToString(player2_choice) << endl;
            winner = determineWinner(player1_choice, player2_choice);
        }
        if ((player1_choice == NUM_ROCK) && (player2_choice == NUM_SCISSORS))
        {
            cout << "Computer chose " << choiceNumToString(player1_choice) <<
                 ", you chose " << choiceNumToString(player2_choice) << endl;
            winner = determineWinner(player1_choice, player2_choice);
        }
    }

    return winner;
}