我需要编写一个程序,读取在无论是从ifstream的或CIN,取决于传递到在运行时程序参数。

我打算执行以下操作:

 istream in;

 if(argv[1] == "cin")
 {
      in = cin;
 }
 else
 {
      ifStream inFile;
      inFile.open(argv[1].c_str());
      in = inFile;
 }

然而,在的IStream保护,我不能申报的IStream,是否有申报在流,通用的方式?

有帮助吗?

解决方案

istream*尝试来代替。但是请注意,你需要稍微修改代码。使用指针,你必须保持你正在指向对象的内存区域。换句话说,在“INFILE”变量不能声明那里,因为这将不存在了别人。该代码可以是,则:

 istream* in;
 ifStream inFile;

 if(!strcmp(argv[1],"cin"))
 {
      in = &cin;
 }
 else
 {
      inFile.open(argv[1]);
      in = &inFile;
 }
 // use *in

(注也是字符串处理中的修改。我修改它们,例如,)

scroll top