反转字符串程序中的分段错误
Segmentation fault in reversing string program
>我正在尝试反转字符串。有人可以解释为什么这会给我分段错误吗?
#include <iostream>
#include <string>
using namespace std;
int main(){
string str,rstr;
int len=str.length(),i=0;
cin>>str;
while(str[i]!=' '){
rstr[--len]=str[i++];
}
rstr[str.length()]=' ';
cout<<rstr;
return 0;
}
PS:需要在不使用库函数的情况下反转它。
如果你想按照你正在做的方式去做,出于练习的目的,请尝试此更改并从那里开始
#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]!=' '){
rstr[--len]=str[i++];
}
rstr[str.length()]=' ';
cout<<rstr;
return 0;
}
或者只使用反向迭代器
std::string s = "Hello";
std::string r(s.rbegin(), s.rend());
str
在这里只不过是一个声明的字符串:
int len=str.length(),i=0;
所以你不能做str.length()
执行以下操作:
#include <iostream>
#include <string>
using namespace std;
int main(){
string str,rstr;
int len,i=0;
cin>>str;
len = str.length();
while(str[i]!=' '){
rstr[i++]=str[--len];
}
rstr[str.length()]=' ';
cout<<rstr;
return 0;
}
相关文章:
- 在某些循环内使用vector.push_back时出现分段错误
- 为什么在运行时没有向我们提供有关分段错误的更多信息?
- 如何解决gcc编译器优化导致的centos双编译器设置中的分段错误
- 当我的阵列太大时出现分段错误
- 分段错误当我试图运行程序时出错
- 在c++中初始化矩阵时出现分段错误(核心转储)
- 尝试使用集合函数时出现分段错误
- 我无法缩小此分段错误的原因
- g++的分段错误(在NaN上使用to_string两次时)
- 我是如何在这段代码中出现分段错误的
- 创建结构的数组时遇到分段错误
- 在c++中键入向量中的所有值后,得到分段错误(核心转储)
- 在 c++ 中实现 Trie 时出现分段错误
- 为什么 fstream 在打开带有格式的文件时会导致分段错误?
- 为什么我遇到分段错误?
- 动态类的分段错误(家庭作业问题)
- 分段错误 - 读取初始化指针的数组
- 如何摆脱C ++中的分段错误错误?
- 使用 CTYPE 时出现分段错误
- 为什么代码给出分段错误?