You're right. In order, the cheapest options are:
1) an account in the local currency with a debit card;
2) credit cards without foreign transaction fees and cash- back
3) ATM withdrawal with a no-fee debit card
Changing USD in cash to get local currency is almost always the worst option. They charge 5%-10% on the exchange rate plus whatever fees.