Stack is Last-In-First-Out and heap has to find available memory first. So generally speaking Stack should be faster. Though the stack has a reserved amount of space.
Of course there's a difference, but it doesn't have anything to do with pointers-vs-nonpointers. It has to do with spurious memory allocation and the propensity for errors to propagate in the code.
Both factors favor the second snippet of code.
I read somwhere that memory allocation was expensive.
Functionally, so long as you dereference your pointers and clean up with delete what you have new'd there is no difference.
However, I can think of no good reason to go to the heap if you do not have to (e.g., you need the object to persist beyond what automatic storage will give you, so you need to dynamic amount of memory). At best, it simply adds another level of indirection (one more dereference you must make) before you get to the actual data you are trying to read.
Nothing's stopping you from testing it yourself (aside from the errors in that code snippet.)
One would expect them to take about the same time, although an implementation of std::string which uses a small string optimization would edge out the cstring version given the average size of the strings in JLBorge's code.