问题描述
我正在尝试使用迭代器反转字符串(例如,将“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;