I did the exchange CHF-RUB at Geneva Airport before boarding and than found lots of small exchange offices around St. Petersburg with same or near same (slightly better, or it appeared to me) rate as the one at GVA.
There are lots of ATMs in bank's lobbies (just like in CH) so you'd be OK to withdraw money. Or exchanging EUR or CHF there too. I did the exchange EUR-RUB and CHF-RUB there plus withdrawn with VISA, I remember the exchange was exacly or almost the same, but never checked the fees for the VISA withdrawal.
Obviously not as safe as CH but no need to worry, don't show huge amounts of money on the street and don't wear too colorful shirts/clothes, you will be the only one there
Learn few words to ask questions or tell yes or no as you will find that almost nobody speaks English (even at airports, customs officers, passport control). Take a dictionary if you want to eat in traditional restaurants.
Leningrad is one of the most beautiful cities I have ever been, enjoy your trip.