加载文件导致程序停止工作

时间:2013-02-11 00:36:21

标签: c++ windows

我想知道是否有人可以帮助我使用我的代码(C ++)?这是不起作用的功能。当我运行它时,Windows弹出并说“此程序已停止工作。”这是不会运行的代码(它有点长,但该​​程序是专有的,我感谢任何帮助):

void ClassName::loadGrades(){
    string temp;
    int count=0;

    ifstream labErnIn("labGradesErn.txt");
    if(labErnIn.is_open()){
        count=0;
        while(labErnIn.good()){
            getline(labErnIn, temp);
            float tempF = ::atof(temp.c_str());
            labGradesErn[count] = tempF;
            if(labGradesErn[count]==0 && count==0) labGradesErn[count]=-1;
            count++;
        }
        labGradesErn[count-1]=-1;
        labErnIn.close();
    }

    else{
        cout << "Unable to open file labGradesErn.txt" << endl;
    }
    // I repeat this for three other sections, same code, different var names.
    // From 'ifstream...' to 'Unable to open file'
}

此函数中未声明的所有变量都在其他地方声明。

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

1 个答案:

答案 0 :(得分:1)

如果labGradesErn是固定数组,则迟早会冒数组溢出的风险。如果是std::vector,则应使用push_back()追加元素,因为增加索引不会增加向量。

另一点是你的while循环。你不测试getline是否成功,你应该在getline而不是good上循环

while (getline(labErnIn, temp)) {
...
}