C++ 构造函数std::istream\u迭代器没有实例
我有以下问题。我想为我的类创建一个文件构造函数。我正在使用C++ 构造函数std::istream\u迭代器没有实例,c++,istream,istream-iterator,C++,Istream,Istream Iterator,我有以下问题。我想为我的类创建一个文件构造函数。我正在使用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 没有构造函数std::istream\u
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
没有构造函数std::istream\u迭代器的实例。。。匹配参数列表
错误C2440:无法从std::ifsteam转换为std::istream\u运算符
这是我的构造函数:
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));
}
}
CAirport(常量字符*文件名、常量字符串和名称、常量int和num)
{
m_strName=名称;
m_uNum=num;
ifstream iStream(文件名);
if(iStream.good())
{
复制(istream_迭代器(istream),
istream_迭代器(),
背部插入器(m_mAirtr);
}
}
的构造函数期望istream\u type
,它是std::basic\u istream
的typedef
您正在用CharT=unsigned int
实例化std::istream\u迭代器,它不是std::ifstream
的char
。你为什么要那样做?完全省略第二个参数,使其默认为char
:
std::copy(std::istream_iterator<CAirtravel>(iStream),
std::istream_iterator<CAirtravel>(),
std::back_inserter(m_mAirtr));
std::copy(std::istream_迭代器(istream),
std::istream_迭代器(),
标准:背部插入器(m_mAirtr);