2017-10-11 59 views
-5

我想要反转一个字符串(C++,用g ++编译)。 是不是字符串被认为是算法功能的容器?string has no members named'reverse'

这是代码:

#include <string> 
#include <algorithm> 


using namespace std; 


int main() 
{ 
    string str = "hello"; 
    str.reverse(str.begin(), str.rbegin()); 

    return 0; 
} 

由于

+2

你是不是指std :: reverse? – UKMonkey

+5

当你使用新的东西时,你应该参考[参考](http://en.cppreference.com/w/cpp/algorithm/reverse),它不能确保你正确地使用它。 – NathanOliver

+0

是的,'string'是一个容器,但没有'string'没有'reverse',你可能意思是'std :: reverse(str.begin(),str.end())'。而你对reverese和forward迭代器的混合很奇怪。我在任何时候都可以避免使用反向迭代器,因为我总是弄错了,但是这看起来也是错误的 – user463035818

回答

1

std::string类模板没有叫reverse一个成员函数。在<algorithm>标题中有一个std::reverse函数。您可能希望以下列方式使用它:

​​

注到位您str.rbegin()的使用str.end()。你也可以定义一个新的字符串并使用接受反向迭代器的字符串构造函数重载:

#include <string> 
int main() { 
    std::string str = "hello"; 
    std::string reversestr(str.rbegin(), str.rend()); 
} 
0

std::string没有方法reverse。但std::reverse存在:

#include <string> 
#include <algorithm> 
#include <iostream> 

int main() 
{ 
    std::string str = "hello"; 
    std::reverse(str.begin(), str.end()); 
    std::cout << str << "\n"; // prints "olleh" 
} 
相关问题