如何将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;
.....
}
Run Code Online (Sandbox Code Playgroud)
Che*_*Alf 26
不需要演员阵容.
#include <fstream>
int main()
{
using namespace std;
ifstream f;
istream& s = f;
}
Run Code Online (Sandbox Code Playgroud)
尝试:
std::ifstream* myStream;
std::istream* myOtherStream = static_cast<std::istream*>(myStream);
myOtherStream = myStream; // implicit cast since types are related.
Run Code Online (Sandbox Code Playgroud)
如果您也有对流类型的引用 (&),则同样有效。 static_cast在这种情况下是首选,因为转换是在编译时完成的,如果转换不可能(即不是istream的基类型ifstream),则允许编译器报告错误。
此外,您可能已经知道这一点,您可以将对 an 的指针/引用传递给ifstream任何接受对 a 的指针/引用的函数istream。例如,该语言允许以下内容:
void processStream(const std::istream& stream);
std::ifstream* myStream;
processStream(*myStream);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
23663 次 |
| 最近记录: |