You need to build your string using a slightly different technique.
Code:
"mv source destination"
will give you the literal source not the value held in the variable source.
Code:
"mv " + source + " " . destination
This says, take the string literal "mv " and append to it the value held in source, then append the string literal " " and finaly append to it the value held in the variable destination.
This will work if source and destination are defined as being objects of the C++ class string. However if they are character arrays then you will need to look at a C style function to help you out. Maybe something like sprintf
Code:
sprintf()(result,"mv %s %s",source,destination)
This is where result is a character array large enough to hold the resultant string, and this will replace the first %s with the value held by the variable source and the second %s will be replaced by the value held in the variable destination.