【问题标题】:How to determine if the cin is keyboard or from file如何确定cin是键盘还是来自文件
【发布时间】:2013-11-06 14:49:18
【问题描述】:

我正在编写一个输入函数:

void input(istream& ins)

以及输出功能:

void output(ostream& outs)

我的问题是在这两个函数中,我想要一个 if 语句来确定我是从文件写入还是从键盘写入。这是因为在我的输入中,如果数据不是来自文件,我也会使用输入来 cout 语句。

我希望我的输出文件确定它是写入文件还是写入屏幕。 基本上,如果我想将流传递给函数,我只想知道如何检查从/到文件的写入。

【问题讨论】:

    标签: c++ istream ostream


    【解决方案1】:

    你可以做一个简单的地址比较:

    if(&ins == &cin){
    //then you using cin, since there is only one cin object
    }else{
    //other istream
    }
    

    cout 也一样...

    if(&outs == &cout || &outs == &cerr){
    //then you using standard outputs: cout or cerr
    }else{
    //other ostream
    }
    

    【讨论】:

    • 不错的一个。正在考虑比这更复杂的事情。
    • 谢谢!我一定会试试这个!看起来很简单,但很有效。
    • 查看我对 cout 的评论
    • 所有这一切似乎都假设这个人没有做a.out > somefile.txt < someotherfile.txt
    • @Charlie 我认为问题是在获取istreamostream 对象时如何知道何时使用标准输入/输出。即使标准输入/输出被重定向到文件,它仍然是一样的,你正在使用cincoutcerr 对象,它们是唯一的。
    猜你喜欢
    • 1970-01-01
    • 2018-10-18
    • 1970-01-01
    • 2018-04-21
    • 1970-01-01
    • 2017-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多