Прочетете определен ред от текстов файл с помощта на C++

#include <iostream.h>

#include <stdlib.h>
#include <fstream.h>
#include <iomanip.h>
#include <string.h>
#include <conio.h>
int view(void)
{ 
  ifstream in("NewFaculty.txt");

  if(!in) {
    cout << "Cannot open input file.\n";
    return 1;
  }

  char str[255];

  while(in) {
    in.getline(str, 255);  // delim defaults to '\n'
    if(in) cout << str << endl;
  }

  in.close();
  getch();
  return 0;
}

int main()
{
  view();
}

Имам този код за извличане на данни от текстов файл в C++. Използвайки този код, получавам данни за целия файл като изход, като:

          name     address    id
          xxx      hyd       0001
          yyy      hyd       0002

Но имам нужда от изход като само определен ред от данни, като приемам въвеждане от клавиатурата. Нужен изход като:

          name     address    id
          xxx      hyd        0001

Тук моят вход е name. Моля, някой да помогне по този начин.


person Santhosha Reddy    schedule 05.10.2015    source източник
comment
да, трябва да го поправя, но нямам никаква идея.   -  person Santhosha Reddy    schedule 05.10.2015
comment
Какъв е входът от клавиатурата (ID, име, адрес, номер на ред)?   -  person sop    schedule 05.10.2015
comment
Използвайте std::istream::ignore, вижте подробности в съществуващия отговор: stackoverflow.com/a/25012566/492336   -  person Андрій Каражов    schedule 05.10.2015
comment
Трябва да проверявате всеки ред, докато го четете. Първо извлечете колоната с име и след това я сравнете с вашето въведено име, за да видите дали съвпадат. Ако го направят, отпечатайте реда и спрете. В противен случай не отпечатвайте реда и продължете.   -  person Galik    schedule 05.10.2015


Отговори (1)


Бих съхранил стойностите на всеки ред в структура като тази:

struct RecordLine
{
   std::size_t lineNo; // optional
   std::string name;
   std::string address;
   std::string id;
};

След това ще проверя въвеждането от клавиатурата и ако е така, ще отпечатам реда. Внимавайте първо да прочетете въведеното от клавиатурата, а след това да търсите във файла. Но можете да използвате клас с методи за четене на реда (би било по-хубаво)

person sop    schedule 05.10.2015