A lot of credit cards are charging foreign transaction fees now. I read where Capital One doesn't. But I don't have a Capital One so I don't know. Each individual should call their credit card company before they leave to let them know they will be traveling, and they can ask about foreign transaction fees then.
I have never seen a ship post exchange rates for a Caribbean/Mexico cruise. Most likely because most people just use American money for Caribbean/Mexico, and the ship doesn't carry any exchange. However: I did see exchange rates posted on my Baltic cruise. The ship carried money to exchange for the Baltic ports.