为什么while循环不会停止? C ++

时间:2018-10-09 10:52:05

标签: c++ while-loop

这是用于读取.txt文件并将其用:分割并打印出结果的代码。但是我陷入了while循环中。这是我的代码。

#include <iostream>
#include <fstream>
#include <string>
#include <cstring>

using namespace std;

string* split(const string& str, const string& delim) {
    string* string_list = new string[10];

    int idx = 0;
    char *token = strtok(const_cast<char*>(str.c_str()), delim.c_str());
    while (token != NULL) {
        string_list[idx] = token;
        token = strtok(NULL, delim.c_str());
        ++idx;
    }

    return string_list;
}

struct Item {
    string name;
    string age;
    string id;
    string subject[10];
};

struct Item* create_item() {
    struct Item* pitem = new Item;

    return pitem;
};

void insert_item(struct Item *prev_item, struct Item *item) {
    item = (prev_item + 5);
}


int main() {
    string student, student2;
    string *string_list, *subject, *string_list2, *subject2;
    struct Item* pstudent, *pstudent2;

    ifstream fin;
    fin.open("input.txt");
    fin >> student;
    while (student != "\n") {
        string_list = split(student, ":");
        pstudent = create_item();
        pstudent->name = *string_list;
        pstudent->age = *(string_list + 1);
        pstudent->id = *(string_list + 2);
        subject = split(*(string_list + 3), ",");
        for (int i = 0; i < 10; i++) {
            if (*(subject + i) != "") {
                pstudent->subject[i] = *(subject + i);
            }
        }
        cout << *(string_list+1) << endl;

        fin >> student2;
        string_list = split(student2, ":");
        pstudent2 = create_item();
        insert_item(pstudent, pstudent2);
        pstudent2->name = *(string_list);
        pstudent2->age = *(string_list + 1);
        pstudent2->id = *(string_list + 2);
        subject2 = split(*(string_list + 3), ",");
        for (int i = 0; i < 10; i++) {
            if (*(subject2 + i) != "") {
                pstudent2->subject[i] = *(subject2 + i);
            }
        }

    }

    cout << pstudent2->name << endl;

    fin.close();
    return 0;
}

我仍在处理此代码,但是main()中的while循环不会停止。我希望在input.txt文件输入是换行符时停止它。

input.txt是

Mary:20:287:Math,Algorithm \ n 汤姆:21:202:数学,英语\ n 嘻:20:256:数学

提前谢谢!

1 个答案:

答案 0 :(得分:0)

不要试图在循环体中处理多个学生。

使用现有的集合类型,而不是尝试编写链表类型。

getColumns