将istream转换为ifstream
Convert istream to ifstream?
我正在为分配的项目遵循http://programmingnotes.freeweq.com/?p=3144的教程。问题是,项目规范要求拼写检查器将通过以下函数通过main
调用:void spellCh(istream& inf, istream& wordlistfile, ostream& outf)
而本教程使用iftream
和ofstream
。所以当我输入
void spellCh(istream& inf, ostream& outf)
{
ifstream& inf1 = inf;
ofstream outf1= outf;
}
它给了我一个错误在两行:非const左值引用类型'ifstream'(又名'basic_ifstream')不能绑定到不相关类型'istream'(又名'basic_istream')的值
请帮忙,因为我花了一天的时间来弄清楚。什么样的代码可以完成它?
std::istream
和std::ostream
分别是std::ifstream
和std::ofstream
的直接基类。由于所谓的多态性,派生类也被认为是它的基类,并且可以隐式地覆盖到指针或其引用(向上转换)。因此,可以简单地将这些实例传递给函数的参数,编译器将成功地将其转换为基类的类型。
对
'ifstream'
类型的非const左值引用不能绑定不相关的'istream'
类型的值
对于基底到派生的转换(向下转换),没有隐式转换。您必须使用static_cast
将目标类型转换为std::ifstream&
。
相关文章:
- 防止主数据类型C++的隐式转换
- 如何将 std::ifstream 转换为 std::basic_istream<CharT, Traits>&?
- 如何将QByteArray转换为std::istream或std::ifstream?
- fstream / ifstream / ofstream 对象如何转换为布尔值
- 将 ifstream 读取到 char* 以进行 int 和字符串转换
- 将 istream 转换为 ifstream 时将 std::cin 传递到参数时出现问题
- 尝试在c++中将文本文件(ifstream)转换为2D字符数组
- 如何将 ifstream 转换为 istream
- 将ifstream输入转换为模板类型
- 将 FILE* 转换为 ifstream C++, Android NDK
- 从 ifstream* 转换为 ifstream&
- 从 C++ ifstream 转换为 C# FileStream
- 如何将 ifstream 转换为 istringstream
- 正在从转换失败的ifstream中获取数据
- 将istream转换为ifstream
- 使用从stringstream转换成字符串的ifstream
- C++:无法从'std::ifstream'转换为'char*'
- 将ifstream强制转换为bool和使用ifstream::is_open()之间的区别
- 隐式强制转换为 basic_istream/ifstream/ofstream 的布尔值在 Visual Studio 2013 中不起作用
- 如何将 ifstream 或字符串输入转换为字符