Line 19 player is uninitialized.
Line 29 You call win with the uninitialized value of player.
At line 110, you return true if the preceding condition detected a winner.
If you get to line 111, the preceding condition was false, so you don't have a winner (yet), but you output the following:
cout << player << "wins!";
Where player is still uninitialized (garbage) and "wins!" is clearly not true.
Ditto for lines 114, 118, 121, 124, 130, 133, 136.
No way to reach the statement at line 140.