В C ++ нет, не совсем (ну, не на любом языке, с которым я знаком, правда).
Вы должны начать с начала файла, чтобы определить, где начинается строка X (если это не файл с фиксированной длиной записи, но вряд ли для текста).
Точно так же вы должны делать это, пока не найдете последнюю интересующую вас строку.
Вы можете читать символы вместо строк, если вы боитесь эксплойтов переполнения буфера, или вы можете читать в блоке фиксированного размера и считать строки для скорости, но все сводится к чтению и проверке каждого символа (по вашему коду явно или языковые библиотеки неявно) для подсчета новых строк.