【问题标题】:No instance of constructor std::istream_iterator没有构造函数 std::istream_iterator 的实例
【发布时间】:2016-06-28 11:22:38
【问题描述】:

我有以下问题。我想为我的类创建一个文件构造函数。我正在使用std::copy 算法,我得到了这种错误:

No instance of constructor std::istream_iterator ... matches the argument list
error C2440: <function-style-cast> cannot convert from std::ifsteam to std::istream_operator

这是我的构造函数:

CAirport(const char* FileName, const string& name, const int& num)
{
    m_strName = name;
    m_uNum = num;
    ifstream iStream(FileName);

    if(iStream.good())
    {
        copy(istream_iterator<CAirtravel, unsigned>(iStream),
             istream_iterator<CAirtravel, unsigned>(),
             back_inserter(m_mAirtr));
    }
}

【问题讨论】:

    标签: c++ istream istream-iterator


    【解决方案1】:

    std::istream_iterator 的构造函数需要istream_type,这是std::basic_istream&lt;CharT, Traits&gt; 的typedef。

    您正在用CharT = unsigned int 实例化std::istream_iterator,这不是std::ifstream 的char。为什么要这么做?完全省略第二个参数,让它默认为char:

    std::copy(std::istream_iterator<CAirtravel>(iStream),
              std::istream_iterator<CAirtravel>(),
              std::back_inserter(m_mAirtr));
    

    【讨论】:

      猜你喜欢
      • 2017-03-13
      • 2019-02-27
      • 2017-02-27
      • 1970-01-01
      • 2018-07-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多