无法读取文本文件

时间:2016-04-23 15:29:20

标签: c++ fstream cin

这是我的文件名为read.txt:

ID Name
22 Joe
33 Jim
ID Name
44 Bob
55 Jeff
ID Name
66 Mike

任务: 每次代码遇到字符串“ID”时,都必须将其后面的行添加到列表中。所以,例如:

(List1)
22 Joe
33 Jim

(List2)
44 Bob
55 Jeff

(List3)
66 Mike

问题:我在阅读文本文件时遇到问题。我查看了其他问题,并看到cin.fail()可能有用。所以,我在我的教科书中查找并尝试实现它,但程序在编译时只显示一个空白屏幕。当我取出所有字符串ID并且只有数字和名称时,代码完美无缺。

这是我的代码部分:

int main()
{
    ifstream file_read;
    file_read.open("read.txt");

    LinkedList list1, list2, list3, list4;  //lists are of type linkedlist
    string name, name2, name3;      
    int ID;                 
    int counter = 0;    //counter initialized
    while (file_read.is_open()) {   //run loop until end of file reached
        if (file_read.fail()) {      //when cin fails
            counter++;               //increment counter
            if (counter == 1) {       //if counter is 1
                file_read >> ID >> name;    
                list1.Add(name, ID);   //add following names to list1
            }
            if (counter == 2) {  //if counter value is 2 
                file_read >> ID >> name2;
                list2.Add(name2, ID);  //add to list 2
            }
            if (counter == 3) {    //if counter value is 3
                file_read >> ID >> name3;
                list3.Add(name3, ID);   //add to list 3
            }
        }
    }
    file_read.close();
}

列表1,2,3是链表。添加是链表的功能。代码的这些部分工作正常,我只是遇到了文本文件部分

输出:我的屏幕空白。

有人可以告诉我我做错了什么以及每当遇到字符串时如何将文本文件数据拆分成各个部分?提前谢谢。

1 个答案:

答案 0 :(得分:0)

你可能意味着

if (! file_read.fail()) {

而不是if (file_read.fail())?毕竟,如果读取成功,您只想添加到列表中。