使用getline错误读取全局istream *

时间:2013-10-03 18:13:15

标签: c++ pointers global getline istream

我正在尝试使用以下代码读取全局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 个答案:

答案 0 :(得分:2)

您将fp声明为指针,但尝试将其用作实例。您的readfile函数应如下所示:

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

(你的代码中还有其他几个语法错误,我假设它只是错别字)。

相关问题