std :: ifstream :: in和std :: ios :: in有什么区别? (显然是C ++中std :: ifstream的openmode标志)

时间:2015-02-03 19:22:51

标签: c++ ifstream

我使用SymbolHound在网上寻找资源,比较两者,但找不到任何东西。

在VS13中查找std::ifstream::in的声明和定义会将我带到basic_ifstream。寻找std::ios::in会让我看到basic_ios

似乎std::ios::in被广泛使用。

提前致谢,

汉斯

2 个答案:

答案 0 :(得分:4)

他们都是一样的。

instd::ios_base的成员。因此,它也是iosifstream的成员,以及源自ios_base的所有其他内容。

  

似乎std::ios::in被广泛使用。

可能因为这是命名它的最短方式。

答案 1 :(得分:1)

如果您查看类型,std::ifstreamstd::basic_ifstream<char>std::iosstd::basic_ios<char>

那里的层次结构是:

template< 
    class CharT, 
    class Traits = std::char_traits<CharT>
> class basic_ifstream : public std::basic_istream<CharT, Traits>

是:

template< 
    class CharT, 
    class Traits = std::char_traits<CharT>
> class basic_istream : virtual public std::basic_ios<CharT, Traits>

std::iosstd::ifstream的基类,因此std::ifstream::in正好是std::ios::in