【问题标题】:Read with C++ ifsteam from file into an template vector使用 C++ ifstream 从文件读取到模板向量
【发布时间】:2016-03-19 05:46:57
【问题描述】:

我想从如下所示的文件 (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&lt;string&gt;vector&lt;float&gt;
如何使用 fstream 阅读此列表?

【问题讨论】:

    标签: c++ list templates


    【解决方案1】:

    试试

    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();
    }
    

    【讨论】:

    • 谢谢。这是有效的。我不习惯使用 value_type。
    【解决方案2】:
    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();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-25
      • 2011-12-28
      • 2010-12-09
      • 1970-01-01
      • 1970-01-01
      • 2011-12-13
      相关资源
      最近更新 更多