String 尝试使用迭代器复制字符串的反向?
这个代码在第7行出现错误? 为什么*it=*rit不工作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
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;