使用C ++将ifsteam从文件读入模板向量

时间:2015-12-13 19:25:53

标签: c++ list templates

我想从一个看起来像这样的文件( First.txt )中读取:

1  
2 
3

和另一个文件( Second.txt ):

ab
cd
de

在main方法中,我将调用模板函数来读取这样的文件:

list<string> list1;
vector<float> list2;

read(list1, "First.txt");
read(list2, "Second.txt");

模板功能具有以下结构:

template<typename T>
void read(T &v, string s)
{

   std::fstream f;
   f.open(dataname,std::ios_base::in);

   f.close();
}

此处T代表list<string>vector<float> 如何使用fstream阅读此列表?

2 个答案:

答案 0 :(得分:4)

尝试

void read(T &v, string s)
{

   std::fstream f(dataname,std::ios_base::in);
   typename T::value_type tmp;
   while( f >> tmp )
       v.push_back(tmp);

   f.close();
}

答案 1 :(得分:0)

std::fstream f(s,std::ios_base::in);
v.assign(std::istream_iterator<typename T::value_type>(f),
        std::istream_iterator<typename T::value_type>());
f.close();