反转弦程序中的分段故障

时间:2017-07-28 14:04:16

标签: c++ string reverse

我正在尝试反转一个字符串。有人可以解释一下为什么这会给我分段错误吗?

#include <iostream>
#include <string>
using namespace std;
int main(){
  string str,rstr;
  int len=str.length(),i=0;
  cin>>str;
  while(str[i]!='\0'){
    rstr[--len]=str[i++];
  }
  rstr[str.length()]='\0';
  cout<<rstr;
  return 0;
}

P.S。:需要在不使用库函数的情况下将其反转。

3 个答案:

答案 0 :(得分:1)

如果您想按照自己的方式行事,出于练习目的,请尝试此更改并从那里开始

#include <iostream>
#include <string>
using namespace std;
int main(){
  string str,rstr;
  cin>>str;                  // --- Moved this line up
  rstr = str;                // --- Added this line
  int len=str.length(),i=0;
  while(str[i]!='\0'){
   rstr[--len]=str[i++];
  }
  rstr[str.length()]='\0';
  cout<<rstr;
  return 0;
}

答案 1 :(得分:0)

或者只使用反向迭代器

<object data="file.pdf" id="myDoc" type="application/pdf" width="100%" height="1000px">
  alt : <a href="folder/file.pdf">HowToCopyADisc.pdf</a>
</object>

答案 2 :(得分:0)

Realm只是一个声明的字符串:

str

所以你不能 int len=str.length(),i=0;

做类似的事情:

str.length()