Я пытаюсь выяснить, как изменить строку temp, когда у меня есть строка, считанная в двоичных числах
istream& operator >>(istream& dat1d, binary& b1)
{
string temp;
dat1d >> temp;
}
Я пытаюсь выяснить, как изменить строку temp, когда у меня есть строка, считанная в двоичных числах
istream& operator >>(istream& dat1d, binary& b1)
{
string temp;
dat1d >> temp;
}
Я не уверен, что вы подразумеваете под строкой, содержащей двоичные числа. Но для изменения строки (или любого STL-совместимого контейнера) вы можете использовать std::reverse(). std::reverse() работает на месте, поэтому сначала вы можете сделать копию строки:
#include <algorithm>
#include <iostream>
#include <string>
int main()
{
std::string foo("foo");
std::string copy(foo);
std::cout << foo << '\n' << copy << '\n';
std::reverse(copy.begin(), copy.end());
std::cout << foo << '\n' << copy << '\n';
}
Try
string reversed(temp.rbegin(), temp.rend());
РЕДАКТИРОВАТЬ: разработка в соответствии с запросом.
string::rbegin() и string::rend(), которые означают "обратное начало" и "обратный конец" соответственно, возвращают обратные итераторы в строку. Это объекты, поддерживающие стандартный интерфейс итератора (operator* для разыменования элемента, т.е. Символ строки, и operator++ для перехода к "следующему" элементу), так что rbegin() указывает на последний символ строка rend() указывает на первую, а продвижение итератора перемещает ее к предыдущему символу (это то, что делает его обратным итератором).
Наконец, конструктор, которым мы передаем эти итераторы, является строковым конструктором вида:
template <typename Iterator>
string(Iterator first, Iterator last);
который принимает пару итераторов любого типа, обозначающих диапазон символов, и инициализирует строку этим диапазоном символов.