C++ Работа getline() с циклом while() и файловым потоком ifstream(). (Не могу понять до конца как работает)
std::string ops1;
std::string ops2;
std::ifstream file("test.txt", std::ios_base::in);
if(file.is_open())
{
while(getline(file, ops1, ':')){
ops2 = ops1;
};
std::cout << ops1 << '\n';
std::cout << ops2 << '\n';
file.close();
}
1)я потратил почти 5 часов, но так и не понял :(
2)нейронки и документация говорят "после разделителя ':' идет пустое значение - поэтому getline() вернет true и тело цикла выполнится"
3)если тело цикла выполнится, то тогда ops2 должно быть равно ops1(пустой строке)
4)у меня ops2 в консоль выводит последнее значение = "00", а вот ops1 выводит пустоту
5)но, также нейронки и сайты говорят "если конец файла - то getline возвращает false и цикл не будет работать"
6)я пришел к двум выводам:
1)getline() делает попытку чтения файла и когда у нас идет попытка, то getline() стирает все данные из ops1, а потом getline() после этого возвращает false в цикл while(), так как ничего не удалось прочитать, и тело цикла с false не выполняется - поэтому ops1 в консоль выводит пустоту, а ops2 выводит последнее значение файла: "00".*
2)getline() читает "ЧТО ТО"(скорее всего это пустота - "") после самого последнего ":"(разделителя) и записывает это в ops1 - то есть записывает пустоту "", а потом getline() в цикл while() возвращает false - ну и все также, поэтому ops1 в консоль выводит пустоту, а ops2 выводит последнее значение файла: "00".**
7)мне две разные нейронки утверждали что ops2 должен возвращать пустоту. Я очень много раз переформулировал вопрос, но ответ нейронок: ops2 должна возвращать пустоту
8)дайте ответ пожалуйста, какой либо из моих выводов по поводу работы getline() у меня правильный и объясните мне работу getline() :)