【发布时间】:2019-03-04 13:34:00
【问题描述】:
我必须编写一个程序来从文件中为学生读取信息,并且我制作了几个向量来保存所有这些信息。但是后来我需要总结所有学生的缺勤情况,所以我需要将它们转换为整数,但是当我尝试运行程序时,当它到达 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) { ... }?然后变量可以是正确的类型,您不需要进行任何转换。请了解结构和类。 -
代替旧的
atoi,尝试使用stoi(在cplusplus.com/reference/string/stoi 中描述),如果仍然不起作用,捕获它可以抛出的异常(参见链接)和看看是哪一个。也有一些测试用例给我们,那是你输入的内容并打印absences[0]的内容,然后你在这里发布。由于在某些评论中您说您已经检查过它,因此它可能包含一些控制字符,这使atoi感到困惑。 (顺便说一句,OOP 方法是使用class Student和vector<Student>或class Students。)