Issue reading multiple lines from .txt file in C++
我正在为一个学校项目创建一个学生数据库系统。我正在尝试创建一个函数,它将在.txt文件中搜索学生ID并返回字符串中的所有其他变量。如果我在TXT文件的第一行搜索学生的ID,但在另一行搜索学生时没有捕获任何内容,那么这就非常有效。我是否遗漏了一些明显的东西?
学生数据是16个字符串,每行用逗号分隔。学生ID是第一个字符串。
谢谢你的帮助!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | StudentType findStudent(int studentToFind) { ifstream inFile; inFile.open("students.txt"); string currentLine; string dataRead[16]; istringstream is; int currentStudent; if (inFile) { while (getline(inFile, currentLine)) { is.str(currentLine); for (int i = 0; i < 16; i++) { getline(is, dataRead[i], ','); } currentStudent = stoi(dataRead[0]); if (currentStudent == studentToFind) { /* Do stuff here */ inFile.close(); return foundStudent; } cin.ignore(); // Not sure if this is needed but I was trying to // clear the char if that was causing the issue } } } |
第一:你没有使用
第二:你应该确保你总是在最后关闭中缀…所以我建议不要提前返回或提前关闭,而是使用break语句退出循环,然后返回一个单独的返回,以确定是否找到它。
第三:既然你把所有的"血腥"都去掉了,我们终于可以解决这个问题了……实际上,问题是我们是否阅读了所有的行?
好吧,让我们检查一下,在while循环开始时,尝试每次打印
好的,那看看你的下一个循环,让我们每次打印出
你找到问题了吗?
这是您需要学习如何使用print语句和调试器来解决的问题。这就是为什么。如果您在Visual Studio中,请以调试模式运行并单步执行…如果没有,使用gdb。学习并习惯它,你会经常使用它的!
祝你好运