Чтение глобального istream* с ошибкой getline

Я пытаюсь прочитать глобальный istream*, используя следующий код:

/*Global Declaration*/
istream* fp;

/* in main */
ifstream iFile;
if(argc == 2)
  //open file code
  fp = &file;
else
  fp = &cin;
readFile;

/*readFile*/
readFile(){
  string line;
  while(fp.getline(line))
    cout<<line<<endl;
}

Я получаю следующий код ошибки: "запрос на членство getline в fp, не относящегося к классу типа `std:: istream* 'Может кто-нибудь сказать мне, что это за ошибка, и есть ли лучший способ исправить это? Я пробовал getline(fp, line), но там тоже было больше ошибок.

1 ответ

Вы декларируете fp в качестве указателя, но пытается использовать его в качестве экземпляра. Ваша функция чтения файла должна выглядеть так:

void readFile()
{
    string line;
    while(std::getline(*fp, line)) // note the de-referencing of fp
    {
        cout<<line<<endl;
    }
}

(У вас также есть несколько других синтаксических ошибок в вашем коде, которые я предполагаю, просто опечатки).

Другие вопросы по тегам