使程序从输入读取元素直到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);
}