In your Copybyebye function you define a new string name rather than using your old one. Without initialization it is empty, thus you get an empty string when you attempt to put it on the console.
The name the user passes in is stored in a value inside the Copyhello() function. Once that function is completed and returns, all values it had stored in the runtime stack are lost.
Make string Copyhello() a string returning function. Return the string name to your main function and then pass it into your void Copybyebye(string) function.
If this doesn't make sense then you need to go back and read up on functions
More importantly, don't delete your question like that. Someone might have used it to help them later, and now whoever helps that person has to type the same thing again.