此代码在第7行给出错误? 为什么*它= * rit无法正常工作?
string temp;
string::reverse_iterator rit;
rit = demo.rbegin();
string::iterator it;
it = temp.begin();
for (; rit != demo.rend(); rit++, it++)
{
*it = *rit;
}
答案 0 :(得分:0)
尝试this:
#include <iostream>
#include <string>
#include <iterator>
int main()
{
std::string s = "Hello, world";
std::reverse_iterator<std::string::iterator> r = s.rbegin();
std::string rev(r, s.rend());
std::cout << rev << '\n';
}
答案 1 :(得分:0)
回答为什么你的版本不起作用。
(我没有看到演示的定义 - 我认为它是一个非空字符串。)
temp虽然定义为空字符串。 你的循环检查&#34; rit&#34;但不是&#34;它&#34;如果2个字符串具有相同的长度,这可能没问题。
&#34;它&#34;正试图沿着一个空字符串进行迭代,这就是解除引用它失败的原因。
如果temp已经是一个具有正确长度的字符串,那么它可以被迭代并成功编辑。
您可以通过
实现这一目标temp.resize(demo.length());
或只是
temp = demo;
在循环之前。