我需要编写一个程序从文件中读取学生的信息,并使用一些向量来保存这些信息。但是,我需要将所有学生的缺席情况加总,所以需要将其转换为整数。但是,当我尝试转换时,程序会运行,但在达到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());
if
和索引?为什么不直接读取这四个值呢?就像这样while (read >> first_name >> last_name >> absence >> unatoned) { ... }
?然后变量可以直接使用正确的类型,而且你也不需要进行任何转换。请学习结构体和类。 - Some programmer dudeatoi
,尝试使用stoi
(在 http://www.cplusplus.com/reference/string/stoi/ 上有描述),如果仍然无法正常工作,请捕获它可能抛出的异常(请参见链接)并查看是哪一个。还需要为我们提供一些测试用例,即您输入的内容,并打印absences[0]
的内容,然后在此处发布。由于您在某个评论中说已经检查过它,因此可能存在一些控制字符会使atoi
混淆。(顺便说一句,面向对象的方法是拥有一个class Student
,并且要么使用vector<Student>
,要么使用class Students
。) - Aziuth