我正在尝试反转一个字符串。有人可以解释一下为什么这会给我分段错误吗?
#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。:需要在不使用库函数的情况下将其反转。
答案 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()