C++ 为什么我从g++;?
下面是我的代码。它在g++中编译得很好,但总是存在这样的运行时错误:分段错误(内核转储) 我错在哪里C++ 为什么我从g++;?,c++,g++,iostream,C++,G++,Iostream,下面是我的代码。它在g++中编译得很好,但总是存在这样的运行时错误:分段错误(内核转储) 我错在哪里 #include<iostream> #include<string> using namespace std; void sort_string(string x){ for (int i=0;x.size();i++){ for(int j=i;x.size();j++){
#include<iostream>
#include<string>
using namespace std;
void sort_string(string x){
for (int i=0;x.size();i++){
for(int j=i;x.size();j++){
char temp = x[i];
if (temp > x[j]){
x[j]=temp;
x[i]=x[j];
}
}
}
}
int main(){
string words;
cin >> words;
while (words != " "){
cout << words << " ";
sort_string(words);
cout << words << endl;
}
}
#包括
#包括
使用名称空间std;
无效排序_字符串(字符串x){
对于(int i=0;x.size();i++){
对于(int j=i;x.size();j++){
字符温度=x[i];
如果(温度>x[j]){
x[j]=温度;
x[i]=x[j];
}
}
}
}
int main(){
字符串;
cin>>单词;
而(单词!=“”){
cout您正在循环超出字符串的边界。您需要:
for (int i=0; i<x.size(); i++){ ... }
for(inti=0;i你的条件毫无意义
for循环中的一部分应该是终止循环的条件。这将始终返回一些非零值,除非字符串为0,这意味着您的代码将无限执行。然后,j始终递增,您将越界。您需要提供一个有效条件,例如i
和j
您的for的条件是错误的。
替换
与
for(int i=0;我用gcc而不是g++编译你的源代码!用g++-Wall-g
编译,然后使用gdb
调试器。我太傻了……我不敢相信我会问这种问题。但是,谢谢!
for (int i=0;x.size();i++){
for(int j=i;x.size();j++){
for (int i=0; i<x.size();i++){
for(int j=i; j<x.size();j++){