Std::istream&作为函数参数



使程序从输入读取元素直到EOF并返回已读元素的容器的最佳方法是什么?这就是我要做的

p.h file:
#pragma once
#include <list>
#include <iostream>
typedef double Element;
template<typename T>
std::list<T> read(std::istream& u);

这是我尝试过的:

#pragma once
#include <list>
#include <iostream>
typedef double Element;
template<typename T>
std::list<T> read(std::istream& u){
while(u){

std::list<T> l;
l.push_front(u);
return l;
}
}

p.cpp file:
#include "p.h"
#include <iostream>

int main(){
double u;
std::cin>>u;

std::list<double> l=read(u);


}

我到底需要把什么作为参数传递给a main函数?我试着传递std::cin,但它不起作用。也可能是因为read函数没有正确定义。我也不明白,如果我们要做泛型函数,typepedef是double的意义是什么。

当您执行l.push_front(u)时,您试图将istream存储在list中。您需要从流中读取T并存储它。还要注意,您需要在循环之外声明l,以便能够读取所有值,然后返回l:

template<typename T>
std::list<T> read(std::istream& u){
T tmp;
std::list<T> l;
while(u >> tmp){
l.push_front(tmp);
}
return l;
}

然后指定要从流中读取的类型,将其作为模板参数提供:

int main(){
auto l=read<double>(std::cin);
}

最新更新