Я пытаюсь выяснить, как изменить строку 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);
который принимает пару итераторов любого типа, обозначающих диапазон символов, и инициализирует строку этим диапазоном символов.