我从矢量打印的功能不会被删除

时间:2014-11-28 00:10:08

标签: c++ vector

//更新,我最终搞清楚了。如果您有点好奇,我在评论中对此进行了描述,再次感谢大家!

我正在制定一个程序,为注册办公室的办公室做几件事,比如注册学生,删除学生等。在提供的代码中,我基本上采用了一个包含课程名称的向量,查看它与学生ID匹配,然后将某些变量附加在一起,将它们放入一个向量中,然后将其打印出来!

问题:此代码编译100%罚款,没有任何问题,并打印学生ID,以及他们注册的课程。

但是,当我尝试再次运行多次时,它会开始加倍打印的内容。所以在我看来它与在完成函数后仍然保持其值的向量有关。所以我决定尝试使用.erase和.clear函数向量成员,甚至创建一个循环来删除变量,它不会删除容器中的内容。

有没有人有任何想法?

以下是第一次发生的事情的示例,然后是控制台中的第二次:

1st time:
"Report Card for student: 10090"
"__________________________    "
"CS101  70                     "
"CS102  65                     "
"CS212  85                     "
"--------------------------    "

2nd time:
"Report Card for student: 10090"
"__________________________    "
"CS101  70                     "
"CS102  65                     "
"CS212  85                     "
"CS101  70                     "
"CS102  65                     "
"CS212  85                     "
"--------------------------    "

非常感谢任何帮助! 谢谢。

void printReport(vector<string>& vect){
    string studentID;
    string line;
    string mark;
    string temp;
    string temp1;
    string tempholder;
    vector<string> reportCardVect;
    ifstream classFile;

    cout << "Please enter the ID of the student who's grade report you would like to print: " << endl;
    cin >> studentID;


    for (int i = 0; i < vect.size(); i++){
        tempholder = vect[i];
        classFile.open(tempholder.append(".txt"));

        while (!classFile.eof()){
            getline(classFile, line);

            temp = line;

            line.erase(line.begin() + 5, line.end());

            if (studentID == line){
                temp.erase(temp.begin(), temp.begin() + 6);
                temp1 = vect[i];
                temp1.append("  ");
                temp1.append(temp);
                reportCardVect.push_back(temp1);
                break;
            }
        }
        classFile.close();
    }
    system("cls");

    cout << "Report Card for student: " << studentID << endl;
    cout << "_________________________" << endl;
    for (int i = 0; i < reportCardVect.size(); i++)
        cout << reportCardVect[i] << endl;
    cout << "-------------------------" << endl;
    cout << endl;


    for (int i = 0; i < reportCardVect.size(); i++){
        reportCardVect[i].erase();
    }

    system("pause");
}

0 个答案:

没有答案