我正在运用一本C++教科书作为C++编程的复习。其中一个练习问题(不想过多解释)要求我定义一个函数,该函数可以将ifstream或cin(例如,istream)作为参数传递。然后,我必须读取流。问题是,我无法找到一种方法使这个函数使用cin和ifstream有效地查找流的末尾。换句话说,
while(input_stream.peek() != EOF)
对于 cin,这种方法行不通。我可以重新设计函数,查找特定短语(比如“# End of Stream #”之类的),但如果我传递的文件流恰好有这个短语,那么这样做是不好的。
我考虑使用函数重载,但到目前为止,书上还没有提到要我这样做。我可能在这一个练习问题上花费了太多精力,但我喜欢创造性的过程,并且很想知道是否有一种方法可以在不使用重载的情况下完成这个问题。