Я не уверен, что вы подразумеваете под строкой, содержащей двоичные числа. Но для изменения строки (или любого STL-совместимого контейнера) вы можете использовать std::reverse(). std::reverse() работает на месте, поэтому сначала вы можете сделать копию строки:
РЕДАКТИРОВАТЬ: разработка в соответствии с запросом.
string::rbegin() и string::rend(), которые означают "обратное начало" и "обратный конец" соответственно, возвращают обратные итераторы в строку. Это объекты, поддерживающие стандартный интерфейс итератора (operator* для разыменования элемента, т.е. Символ строки, и operator++ для перехода к "следующему" элементу), так что rbegin() указывает на последний символ строка rend() указывает на первую, а продвижение итератора перемещает ее к предыдущему символу (это то, что делает его обратным итератором).
Наконец, конструктор, которым мы передаем эти итераторы, является строковым конструктором вида: