Я пытаюсь создать программу, которая будет считывать ввод из текстового файла и вызывать функцию, когда она обнаруживает «1» в текстовом файле. Когда программа обнаружит «1» в текстовом файле, она вызовет ReadLines (fstream & file). Readlines () прочитает следующие 4 строки в программе. У меня проблема в том, что после вызова Readlines () l oop внутри main не читает следующую строку в текстовом файле. Он пропускает его и продолжает читать файл, пока l oop создается в main.
fstream file("paper.txt");
std::string str;
//Check if file is open
if (file.is_open()) {
cout << "File is open" << endl;
}
else {
cout << "File is not open" << endl;
return 0;
}
//Get line from text file until it is at the end of file
while (std::getline(file, str)) {
//Print the current line
std::cout << str << endl;
//If getline detects a "1", call ReadLines function
if (str == "1") {
cout << "---enter loop----" << endl;
ReadLines(file);
}
}
file.close();
return 0;
}
void ReadLines(fstream& file) {
int i = 1;
std::string str;
//Read the next 4 lines
while (std::getline(file, str) && i < 5) {
std::cout << str << endl;
i++;
}
cout << "--exit loop--" << endl;
}
Вот содержимое текстового файла
1
234
10
12.5
tacos
1
123
12
23.22
cake
Как видите, «1» дважды виден в текстовом файле. Кажется, что l oop внутри функции ReadLines работает нормально, но после того, как l oop возвращается к основному l oop, основной l oop не обнаруживает второе «1». Он пропускает его и не вызывает функцию ReadLines.