0
我已经成功地编译了这段代码,但是当我到达main的最后一个循环时,我得到一个核心转储handle_exception。我该如何解决?核心转储异常
的main.cpp
#include <iostream>
#include <string>
#include <fstream>
#include <vector>
#include "DRSequence.h"
using namespace std;
vector <DRSequence> array;
int indexOfSequenceWithFirstWord(string word){
for(unsigned int cnt=0;cnt<array.size();cnt++){
DRSequence s = array[cnt];
if(word.compare(s.firstWord())==0)
return cnt;
}
return -1;
}
int main(int argc, char **argv) {
cout << "Opening File:" << argv[1] << "\n";
string in;
ifstream inFile;
inFile.open(argv[1]);
if (!inFile) { cout << "Unable to open file"; exit(1); }
unsigned int cnt = 0;
DRSequence sequence;
while (inFile >> in) {
if(cnt % 2 == 0){
int index = indexOfSequenceWithFirstWord(in);
if(index<0){
sequence.setFirstWord(in);
array.push_back(sequence);
}else
sequence = array[index];
}
cnt++;
}
inFile.close();
for(cnt=0;array.size();cnt++){
DRSequence s = array[cnt];
s.description();
}
return 0;
}
DRSquence.h
#include <iostream>
#include <string>
#include <vector>
using namespace std;
class DRSequence {
string first;
vector <DRSequence> array;
int count;
public:
void description(){
cout << first << "\n";
for(unsigned int cnt=0;cnt < array.size(); cnt++){
cout << "\t" << array[cnt].firstWord() << " " << array[cnt].countDegree() << "\n";
}
}
void setFirstWord(string s1){
first = s1;
}
string firstWord(){
return first;
}
int countDegree(){
return count;
}
void addSecondWord(string s){
}
private:
int indexOfSequenceWithWord(string word){
for(unsigned int cnt=0;cnt < array.size();cnt++){
DRSequence s = array[cnt];
if(word.compare(s.firstWord())==0)
return cnt;
}
return -1;
}
};
您是否尝试过在*,其中*发生错误调试器中运行的代码? – 2009-12-05 02:31:12
哦,在头文件中使用namespace std;是不好的做法,应该避免这种情况。 – 2009-12-05 02:32:21
当我们选择代码时,在不需要使用全局变量的情况下_不使用全局变量._ – 2009-12-05 02:40:39