我试图找出当我用二进制数字读取字符串时如何反转字符串temp
istream& operator >>(istream& dat1d, binary& b1)
{
string temp;
dat1d >> temp;
}
答案 0 :(得分:48)
我不确定包含二进制数字的字符串是什么意思。但是,对于反转字符串(或任何与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';
}
答案 1 :(得分:26)
尝试
string reversed(temp.rbegin(), temp.rend());
编辑:按要求详细说明。
string::rbegin()
和string::rend()
分别代表“反向开始”和“反向结束”,将反向迭代器返回到字符串中。这些对象支持标准迭代器接口(operator*
取消引用元素,即字符串的字符,operator++
前进到“下一个”元素,这样rbegin()
指向字符串的最后一个字符,rend()
指向第一个字符,并推进迭代器将其移动到 previous 字符(这使得它成为反向迭代器)。
最后,我们将这些迭代器传递给的构造函数是一个形式为
的字符串构造函数template <typename Iterator>
string(Iterator first, Iterator last);
接受一对表示一系列字符的任何类型的迭代器,并将字符串初始化为该字符范围。