Как сделать чтоб можно по номеру строки выводить весь текст этой строки

ifstream question_1;//вопрос 1                  
{
question_1.open(question1);
if (!question_1.is_open())
{
    cout << "Ошибка открытия файла" << endl;
}
else
{
    cout << "файл открыт" << "\n\n" << endl;
    cout << text1 << endl;
    while (!question_1.eof())
    {
        
        //затирка для того чтоб последнее значение не повторялось
        text1 = "";
        // Объект откуда считывается, куда записывать
        getline(question_1, text1);//построчное считывание

Допустим у меня выпал номер 4 и соответственно мне нужно вывести весь текст 4 строки


Ответы (1 шт):

Автор решения: mazik7512

Вам нужно сначала считывать все строки из файла в массив строк. Тут есть два варианта, если вы изначально знаете количество строк, то просто создавайте массив этого размера. Предположим, что количество этих строк равно 5.

const int N = 5;
string* str_arr = new string[N];
for (int i = 0; i < N; i++)
{
    getline(question_1, str_arr[i]);
}
delete [] str_arr;

Либо же, если количество строк неизвестно воспользуйтесь контейнером vector.

vector<string> str_arr;

И при запросе номера строки выводить из этого массива элемент под индексом [Номер запрошенной строки - 1].

int index;
cout << "Введите номер строки>";
cin >> index;
cout << str_arr[index - 1] << endl; 

UPD. Добавил чтение по совету @KoVadim.

→ Ссылка