如何调用接受 std::istream& 的函数

How to call the function that accepts std::istream&

我是 C++ 的初学者。调用需要 std::istream& 的函数的正确方法是什么?

read(std::cin); 试过,但编译器出错。

typedef double Element;

template<typename T>
std::list<T> read(std::istream& i) {  
  Element input;
  std::list<Element> l;
  while(i>>input) {
   l.push_back(input);
  }
  return l;
}

这与 std::istream& 参数无关。

问题是该函数是一个函数模板,它需要一个明确的模板参数来确定应该从流中读取的类型,例如:

read<int>(std::cin)

编译器的错误消息也应该告诉您类似的信息。

除此之外,您还没有在函数中使用 T。可能您想将 Element 的所有用法替换为 T 并删除 typedef.

你有一个小的语法错误:

试试这个代码:

typedef double Element;
class test{

public:
auto read(std::istream& i){

Element input;
std::list<Element> l;
while(i>>input){
 l.push_back(input);
}
return l;
}


};


int main(){
test t;
t.read(std::cin);

return 0;
}