C++ 从文件c++;[程序在读取put时停止]

C++ 从文件c++;[程序在读取put时停止],c++,C++,我从文件中读取时遇到问题,我感到迷失方向,似乎无法在我的代码中找到错误(我确信这是一个小错误,因为我以前做过),这是一个家庭作业。赋值要求构造函数从文件加载内容。但是,程序在读取第一行后停止 tree::tree() { root = NULL; load(); } int tree::load() { ifstream inFile; definition anEntry; char title[TITLE], info[INFO];

我从文件中读取时遇到问题,我感到迷失方向,似乎无法在我的代码中找到错误(我确信这是一个小错误,因为我以前做过),这是一个家庭作业。赋值要求构造函数从文件加载内容。但是,程序在读取第一行后停止

tree::tree()
    {

    root = NULL;
    load();
}

int tree::load()
{
    ifstream inFile;

    definition anEntry;

    char title[TITLE], info[INFO];

    inFile.open("CS_terms.txt");

    if (inFile.is_open())
    {
        cin.get(title, TITLE, ':');
        cin.ignore(TITLE, ':');
        cin.get(info, INFO, '\n');
        cin.ignore(INFO, '\n'); 

        anEntry.createEntry(title, info);
        insert(anEntry);

        while (inFile.is_open() && !inFile.eof())
        {
            cin.get(title, TITLE, ':');
            cin.ignore(TITLE, ':');
            cin.get(info, INFO, '\n');
            cin.ignore(INFO, '\n'); 
            anEntry.createEntry(title, info);
            insert(anEntry);
        }
        inFile.close();
        return 1;
    }
    else
    {
        cout << "No File" << endl;
        return 0;
    }
}
tree::tree()
{
root=NULL;
加载();
}
int-tree::load()
{
河流充填;
定义输入;
字符标题[标题],信息[信息];
infle.open(“CS_terms.txt”);
if(infle.is_open())
{
cin.get(标题,标题“:”);
cin.忽略(标题“:”);
cin.get(info,info,'\n');
cin.忽略(信息,'\n');
anEntry.createEntry(标题、信息);
插入(输入);
while(infle.is_open()&&!infle.eof())
{
cin.get(标题,标题“:”);
cin.忽略(标题“:”);
cin.get(info,info,'\n');
cin.忽略(信息,'\n');
anEntry.createEntry(标题、信息);
插入(输入);
}
infle.close();
返回1;
}
其他的
{

cout您应该替换这一行:

if (inFile)
由此

if (inFile.is_open())
这是:

while (inFile.is_open() && !inFile.eof())


尝试将
cin.get()
替换为
infle.get()

您的根目录为空,并且您正在执行根目录->条目…不起作用,应该是这个anEntry.createEntry(title,info);insert(anEntry);
while(infle&!infle.eof())
看起来你不需要在while循环之前使用冗余位,因为它已经在while循环中了。这不会解决问题,但会使它更简单。是的,它仍然存在,我已经稍微更新了我的代码。drescherjm,我知道它不好用,但是,它甚至没有进入循环。程序位于cin.get(title,title,“:”)的顶部;第一次读取时,不会转到codeTrue的下一行,但它是打开的,因为他们正在获取第一行。为什么文件会关闭,除非关闭()正在调用?第一次尝试从文件读入时存在问题..我的文本文件是否已损坏?如果已损坏,我如何检查?哦,顺便说一句,我过去也遇到过类似问题,在将文件从windows传输到linux时,新行符与中的\r\n相关联windows@HaiNguyen使用cmd命令:
dos2unix CS_terms.txt
在linux控制台中预处理文本文件
while (inFile.good())