gpt4 book ai didi

c++ - 从具有不同变量类型的文件中逐行读取

转载 作者:太空宇宙 更新时间:2023-11-04 13:25:10 26 4
gpt4 key购买 nike

对于我正在做的一个项目,我们必须用“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;

};

最佳答案

您需要先初始化featuresaddress,可以使用new 或将其创建为一定长度的字符数组。你这样做的方式是你试图写入尚未分配的内存 - 因此缓冲区溢出。

关于c++ - 从具有不同变量类型的文件中逐行读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33617983/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com