【发布时间】:2013-10-10 13:36:36
【问题描述】:
我正在尝试使用以下代码读取全局 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;
}
我收到以下错误代码:
"在fp 中对成员getline 的请求,它属于非类类型`std::istream*'
谁能告诉我错误是什么,如果有更好的方法来解决它?我确实尝试过 getline(fp, line) 但那里也有更多错误。
【问题讨论】:
-
顺便说一下,你要找的是
std::getline,而不是std::istream::getline。 -
.!=->,类似地,std::getline(fp, line)!=std::getline(*fp, line)。 -
我确实尝试过,但得到以下错误:no matching function for call to `getline(std::istream*&, std::string&) 我认为我的方式有问题声明和分配文件指针,但我不知道还有什么方法可以做到这一点。
-
顺便说一句,不需要创建
fp指针。您可以简单地将参考用作:auto & fp = argc==2? file : cin;。现在fp是一个参考。 -
Zac Howland 的解决方案不起作用吗?
标签: c++ pointers global getline istream