如何反转std :: string?

时间:2011-02-09 23:27:03

标签: c++ string binary reverse

我试图找出当我用二进制数字读取字符串时如何反转字符串temp

istream& operator >>(istream& dat1d, binary& b1)    
{              
    string temp; 

    dat1d >> temp;    
}

2 个答案:

答案 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);

接受一对表示一系列字符的任何类型的迭代器,并将字符串初始化为该字符范围。