Not quite. Line 56 should put something in the output buffer, ready to be flushed (and displayed on screen), but there's no guarantee that it will immediately be flushed and displayed on screen. If you want to force it to flush and definitely go to the screen, add an endl or a flush.
It's not freezing. It takes a very long time. Here is a faster implementation of a function that multiplies together all the digits in a number. It uses C++11, but that's not important. It could easily be done with C++98. What's important is that the algorithm is simply doing much less work.
You can do it without string manipulation. You can split the number into individual digits in other ways. You chose a massively, massively inefficient algorithm. Part of the point of Project Euler is to force people to actually think about efficiency of algorithms. As you've seen, your algorithm is so slow as to be useless.
If you already did it with string manipulation, and then decided to try again without that, good for you. Have fun with it.
You should also think about how you couldn't tell if it had frozen, or was just taking a long time. Very, very different things.