Как правильно в городе Санкт-Перербурге или в городе Санкт-Перербург можно выяснить, если определить, что оба слова как родовое понятие "город", так и имя собственное Санкт-Петербург являются изменяемыми.
Они грамматически оформлены как неодушевленные существительные мужского рода второго склонения.
Понаблюдаем за их изменением по падежам:
и. п. что? город Санкт-Перетбург
р. п. местоположение чего? города Санкт-Петербурга
д. п. подъезжаем к чему? к городу Санкт-Петербургу
в. п. приедем во что? в город Санкт-Петербург
т. п. любуемся чем? городом Санкт-Петербургом
п. п. живем в чём? в городе Санкт-Петербурге
Согласно морфологической норме русского литературного языка родовые слова (село, поселок, город, деревня) и название топонимов (географические наименования) склоняются.
Правильно пишется "в городе Санкт-Петербурге".
Не склоняются географические названия, если у родового слова и наименования не совпадает категория рода или название имеет форму множественного числа:
у горы Арарат;
в городе Набережные Челны.