使用迭代器反转字符串

问题描述

我正在尝试使用迭代器反转字符串(例如,将“bro”更改为“orb”)。不幸的是,我的代码不起作用。这是我的代码


for(std::string text; std::cin >> text;){
    for(std::string::const_iterator it = text.cend() + 1; it <= text.cbegin(); --it)
        std::cout << *it;
}


return 0;}

我哪里做错了?

解决方法

首先,您的代码不是反转字符串,而是向后打印字符串。完全不一样。

向后打印字符串的简单方法是使用反向迭代器

for (auto it = text.rbegin(); it != text.rend(); ++it)
    std::cout << *it;

但是如果你想用一个普通的迭代器来做,那么下面的工作

auto it = text.end();
while (it > text.begin())
     std::cout << *--it;