The problem is not with copying the array (although I am not sure why you are doing that in the first place) but with the way that you are extracting from the stream. You want to use getline so that it extracts the entire line up to the carriage return. Use the debugger and look at the value returned by exp.length(). Moreover the for loop is not necessary. The stream operator<< can handle the entire array in one line of code whether you send it the whole string object or the c-array. One more thing. When copying strings the length does not include the null. You need to manually add a null at the end so technically the copy operation is not correct either. You need length() + 1 and to insert the null at the end.
getline(cin, exp); // this will do the trick for you.