我必须编写一个程序来从文件中读取学生的信息,并且我制作了两个 vector 来保留所有信息。但是然后我需要总结所有学生的缺席情况,因此我需要将它们转换为整数,但是当我尝试运行程序时,当到达atoi部分时立即崩溃。

while(!read.eof()) {
    if(i==4){
        i=0;
    }

    read>>b;

    if(i==0){ names.push_back(b); }
    if(i==1){ last_name.push_back(b); }
    if(i==2){ absences.push_back(b); }
    if(i==3){ unatoned.push_back(b); }
    i++;
}

int a = atoi(absences[0].c_str());

最佳答案

如果absences保持为空,则absences[0]的行为未定义。

absences.at(0)为空时使用absences会强制编译器抛出异常,因此更易于使用。

无论哪种方式,对于缺席人数,只需使用

auto a = absences.size();

10-04 21:05