Консультация № 189054
31.03.2016, 21:11
0.00 руб.
0 4 1
Уважаемые эксперты! Пожалуйста, ответьте на вопрос:

void ReadFile(int n)//Чтение из файла
{
cout << "Вторая строка:";
cout << endl;
char bufer[50];
ifstream fout3("task4.txt"); // открыли файл для чтения
fout3.getline(bufer, 50);
fout3.getline(bufer, 50);
fout3.close(); // закрываем файл
cout << bufer << endl;
}

это я написал процедуру вывода второй строки из файла.
как мне сделать, чтобы при вводе номера строки, появлялась нужная строка?

Обсуждение

давно
Старший Модератор
17042
808
01.04.2016, 04:40
общий
это ответ
Здравствуйте, Посетитель - 399158!

Простейшее решение - сохранять содержимое буфера в строковом массиве с последующим обращением к его элементам по индексу.

Код:

#include <iostream>
#include <fstream>
#include <string>
#include <vector>
using namespace std;
//-------------------------------------------------------------
void ReadFile(int n)//Чтение из файла
{
vector<string> sString;
char psBuffer[50];
ifstream fout3("task4.txt");
cout << "Файл открыт для чтения..." << endl;
fout3.getline(psBuffer, 50);
sString.push_back(string(psBuffer));
fout3.getline(psBuffer, 50);
sString.push_back(string(psBuffer));
cout << "Чтение строк из файла завершено." << endl;
fout3.close();
if(n > sString.size())
{
cout << "Строка с номером " << n << "не найдена!" << endl;
}
else
{
cout << sString[n - 1] << endl;
}
}
//-------------------------------------------------------------
int main()
{
ReadFile(2);
return 0;
}


Вывод работающей программы:


Об авторе:
We have but faith: we cannot know;
For knowledge is of things we see;
And yet we trust it comes from thee,
A beam in darkness: let it grow.
-----
https://www.linkedin.com/in/andreynkuznetsov
https://www.researchgate.net/profile/Andrey_Kuznetsov11
http://www.researcherid.com/rid/K-8824-2014
давно
Посетитель
7438
7205
01.04.2016, 11:01
общий
Адресаты:
Можно еще не читать весь файл в массив, а читать построчно и считать.
На нужной остановиться...
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
давно
Посетитель
399158
228
14.04.2016, 13:10
общий
только я не пойму, а где тут номер строки вводить?
давно
Посетитель
399158
228
14.04.2016, 13:14
общий
ааа, разобрался... спасибо большое
Форма ответа