Kam*_*ill 28 c++ string binary reverse
我试图弄清楚temp当我用二进制数字读取字符串时如何反转字符串
istream& operator >>(istream& dat1d, binary& b1)
{
string temp;
dat1d >> temp;
}
Run Code Online (Sandbox Code Playgroud)
Max*_*ert 57
我不确定包含二进制数字的字符串是什么意思.但是,对于反转字符串(或任何兼容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';
}
Run Code Online (Sandbox Code Playgroud)
HC4*_*ica 30
尝试
string reversed(temp.rbegin(), temp.rend());
Run Code Online (Sandbox Code Playgroud)
编辑:按要求详细说明.
string::rbegin()并且string::rend(),分别代表"反向开始"和"反向结束",将反向迭代器返回到字符串中.这些是支持标准迭代器接口的对象(operator*取消引用元素,即字符串的字符,并operator++前进到"next"元素),这样rbegin()指向字符串的最后一个字符,rend()指向第一个字符,并推进迭代器将它移动到前一个字符(这是使它成为反向迭代器的原因).
最后,我们将这些迭代器传递给的构造函数是一个形式的字符串构造函数:
template <typename Iterator>
string(Iterator first, Iterator last);
Run Code Online (Sandbox Code Playgroud)
它接受一对表示一系列字符的任何类型的迭代器,并将字符串初始化为该字符范围.