用vector存放class类型数据,在文件读取时应该是发生了死循环。导致程序一直运行不出来。

main函数中会首先创建一个类对象,在运行代码时,先执行构造函数,读文件操作在构造函数里。运行时就弹出黑窗,然后内存一直增加。
将文件相关的代码注释掉,程序正常运行。不知道读文件代码哪里出了问题
构造函数的读文件代码如下:

BookManage::BookManage()
{
    ifstream ifs;
    ifs.open(FileName, ios::in);
    
    //文件不存在
    if (!ifs.is_open())
    {
        Book_Num = 0;            //初始化书籍种类数量为0
        ifs.close();
        return;            //如果文件不存在直接退出,
    }
    
    //文件数据为空
    char a;
    ifs >> a;
    if (ifs.eof())
    {
        Book_Num = 0;
        ifs.close();
        return;
    }
    
    //文件存在且数据不为空
    Book_Num = get_bookNum();        //更新书籍种类数量
    string name;
    string isbn;
    string number;
    string writer;
    string press;
    string publish_time;
    int publish_number;
    double price;
    int amount;
    for(int i=0;i<Book_Num;i++)
    {
        ifs >> name  >> isbn  >> number  >> writer >> press  >> publish_time  >> publish_number >> price >> amount;
        BookManage b;
        b.Name = name;
        b.ISBN = isbn;
        b.Number = number;
        b.Writer = writer;
        b.Press = press;
        b.Publish_Time = publish_time;
        b.Publish_Number = publish_number;
        b.Price = price;
        b.Amount = amount;
        book.push_back(b);
    }
    ifs.close();
}

文件中的数据:

img

运行时:

img

在for循环中,判断是否读取失败
if(ifs.fail()) break;
另外,你读取数据的时候,每一行最后的换行符也需要用一个char来读取一下,否则会影响后面数据的读取。