my question is the title.
Why is str2double so slow in matlab as compared to a mex function made in C/C++? Does matlab just not have good string handling c
The implementation of str2double is not hidden from you. To see it, type edit str2doulbe.m. You can also run the profiler on your code to see where in the function all the time is being spent.
Looking at the function, my guess is that it is slow b/c sscanf is being called inside a loop. One of the commenters in the fileexchange link you posted suggested using the following code to take advantage of sscanf being vectorized:
d = reshape(sscanf(sprintf('%s#', c{:}), '%g#'), size(c));
This is actually much faster than str2double for a cell array.