Этот вопрос закрыт для ответов, так как повторяет вопрос Как построчно выводить даные из .txt документа в C++?
@CteplerMarinovich

Почему я не могу построчно выводить текст из .txt документа?

У меня есть функция, цель которой построчно возвращать текст из документа. Вот она:
string NextSpeech()
{
    string res; //переменная для записи результата работы функции
    ifstream Reader("main.txt");

    int i = 0; //нечто, вроде "итератор для цикла while"
    int NowLine = 0; //индекс строки, которая мне нужна
    while (getline(Reader, res))
    {
        if (i == NowLine)//проверяю, соответствует ли количество итераций цикла с тндексом необходимой мне строкм
        {
            return res; //в таком случае заношу эту строку в переменную для результата
            i = 0; //обнуляю итератор
            NowLine++; //добавляю к индексу необходимой строки 1
            break; //pfdthif. wbrk
        }

        i++;//в случае если итератор не равен индексу, я прибавляю 1 к итератору и перезапускаю цикл
    }
    
}

Почему оно выводит только первую строку? Я буквально досконально все проверил...
  • Вопрос задан
  • 128 просмотров
Ответы на вопрос 2
По return res; происходит выход из функции и дальше код после return не выполняется.
Ответ написан
@dima20155
you don't choose c++. It chooses you
Вы открываете файл читаешь первую строку и закрываешь файл, можешь сделать Reader статичной переменной static ifstream Reader("main.txt"); и это решит вопрос, но будет плохим решение с точки зрения архитектуры и модификации программы.
Вам нужно либо иметь счетчик строк, либо держать открытым файл более продолжительное время.
Можно написать класс, который будет оберткой над ifstream.
А главное не очень понятно что вы делаете, почему вы просто не можете построчно читать файл там, где вызываете эту функцию?

А ещё лучше это почти дубль вашего вопроса, что не особо хорошо.
Если вам не ответили на вопрос, то учтите замечания и задайте его правильно. Что вы хотите, зачем и где использовать.
Ответ написан
Ваш ответ на вопрос

Вопрос закрыт для ответов и комментариев

Потому что уже есть похожий вопрос.
Похожие вопросы