【发布时间】:2015-11-09 20:49:08
【问题描述】:
对于我正在做的一个项目,我们必须用“House”对象填充一个队列。 “House”对象从名为“data.dat”的文件中获取信息。文件的每一行都是另一个进入房子对象的东西。所以首先我取一个 char* 作为地址,然后是一个 int,另一个 int,第三个 int,然后是另一个 char*。我们并没有大声使用字符串来获取 char* 变量,我相信这是我遇到问题的地方。每次我编译它都会告诉我我有一个分段错误。这是我的 queue.cpp 的区域,我很确定错误在
#include"queue.h"
#include<iostream>
#include<fstream>
#include<istream>
Queue::Queue(const char *filename){
head = NULL;
tail = NULL;
std::ifstream infile(filename);
char * address = NULL;
int footage = 0;
int bedrooms = 0;
int bathrooms = 0;
char * features = NULL;
while(!infile.eof()){
while(infile.get() != '\n'){
//std::cout << infile.get();
infile.get(address[i]);
}
infile >> footage >> bedrooms >> bathrooms;
while(infile.get() != '\n'){
infile.get(features[i]);
}
enqueue(House(address, footage, bedrooms, bathrooms, features));
}
infile.close();
}
这是房子对象的头文件:
House();
House(char * ad, int fo, int be, int ba, char * fe);
char * getAddress();
int getFootage();
int getBedrooms();
int getBathrooms();
char * getFeatures();
void setAddress(char * ad);
void setFootage(int fo);
void setBedrooms(int be);
void setBathrooms(int ba);
void setFeatures(char * fe);
friend std::ostream& operator<<(std::ostream& out, House& house);
private:
char * address;
int footage;
int bedrooms;
int bathrooms;
char * features;
};
【问题讨论】:
-
和 data.dat 看起来像...?