Some banks actually have international agreements to not charge fees to each others members. For example: A Bank of AmericanAmerica member can use any PNBBNP Paribas ATM without an ATM fee and vice versa. As far as credit cards go, there are a few that have zero foreign transaction fees. The exchange rate with cards are pretty good so I would rely on that most of the time and use cash more as a last resort. More cards are getting smart chips as well. So far the only American card I have found with no foreign transaction fee, no annual fee and a smart chip is the BA Travel Rewards Card, but you may have some luck shopping around for another card.
When it comes to cash I find that the absolute best exchange rate comes from an individual who is traveling the other way. You can exchange at the market rate since it will benefit both of you. Otherwise ATMs are the way to go. Avoid TravelEx at all cost! They will cost you the most money. Since I travel frequently to Europe I make sure to just save ~150 Euros for the next time. It's enough money to get to the hotel and extra in case of emergencies. I have it to last me until I can get to an ATM.