如何将ifstream投射到istream中。我想因为ifstream是istream的孩子我应该能够这样做但是我一直遇到这样的任务有问题。
std::istream & inputStr = std::cin;
std::ostream & outputStr = std::cout;
if(argc == 3){
std::fstream inputFile;
inputFile.open(argv[1], std::fstream::in);
if(!inputFile){
std::cerr << "Error opening input file";
exit(1);
}
inputStr = inputFile;
.....
}
答案 0 :(得分:25)
不需要演员表。
#include <fstream>
int main()
{
using namespace std;
ifstream f;
istream& s = f;
}
答案 1 :(得分:1)
尝试:
std::ifstream* myStream;
std::istream* myOtherStream = static_cast<std::istream*>(myStream);
myOtherStream = myStream; // implicit cast since types are related.
如果您对流类型也有引用(&amp;),则同样有效。在这种情况下,static_cast
是首选,因为转换是在编译时完成的,如果转换不可能,编译器会报告错误(即istream
不是{{1}的基本类型})。
此外,您可能已经知道这一点,您可以将指针/引用传递给ifstream
到任何接受ifstream
指针/引用的函数。例如,语言允许以下内容:
istream
答案 2 :(得分:0)
std::istream *istreamObj = dynamic_cast<std::istream *>(&ifStreamObj)