String 尝试使用迭代器复制字符串的反向?

String 尝试使用迭代器复制字符串的反向?,string,iterator,String,Iterator,这个代码在第7行出现错误? 为什么*it=*rit不工作 string temp; string::reverse_iterator rit; rit = demo.rbegin(); string::iterator it; it = temp.begin(); for (; rit != demo.rend(); rit++, it++) { *it = *rit; } 像这样尝试: #包括 #包括 #包括 int main() { std::string s=“你好,世界”; s

这个代码在第7行出现错误? 为什么*it=*rit不工作

string temp;
string::reverse_iterator rit;
rit = demo.rbegin();
string::iterator it;
it = temp.begin();
for (; rit != demo.rend(); rit++, it++)
{
    *it = *rit;
}
像这样尝试:

#包括
#包括
#包括
int main()
{
std::string s=“你好,世界”;
std::reverse_迭代器r=s.rbegin();
std::string rev(r,s.rend());

std::cout来回答为什么您的版本不起作用

(我没有看到demo的定义-我假设它是一个非空字符串。)

但是,temp被定义为空字符串。 您的循环检查“rit”,但不检查“it”。如果两个字符串的长度相同,则可以

“it”试图沿着空字符串进行迭代,这就是为什么解引用失败的原因

如果temp已经是一个长度正确的字符串,则可以成功地对其进行迭代和编辑

你可以通过

temp.resize(demo.length());
或者只是

temp = demo;

在循环之前。

另一种方法是使用temp.push_back(*rit);而不是使用赋值。任何答案对您有帮助吗?请随意回答
temp = demo;